Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件。Exist始终返回false_C# - Fatal编程技术网

C# 文件。Exist始终返回false

C# 文件。Exist始终返回false,c#,C#,我知道已经有人问了很多问题,但我仍然无法让我的代码正常工作 我建立了一个小程序,让你选择一个产品,如果你想买它,我会询问你的信息。每次给定的信息,如姓名、地址等。。。保存在单个Excel文件中 现在我想创建这个文件,如果它还不存在的话。它可以创建一个,并覆盖它。但是如果它存在,File.Exist将返回一个false,并用一个新的空格覆盖整个文件。它被创建到[user]\Documents文件夹 我检查文件是否已经存在的想法是: if (!File.Exists(@"C:\Bestellunge

我知道已经有人问了很多问题,但我仍然无法让我的代码正常工作

我建立了一个小程序,让你选择一个产品,如果你想买它,我会询问你的信息。每次给定的信息,如姓名、地址等。。。保存在单个Excel文件中

现在我想创建这个文件,如果它还不存在的话。它可以创建一个,并覆盖它。但是如果它存在,
File.Exist
将返回一个false,并用一个新的空格覆盖整个文件。它被创建到
[user]\Documents
文件夹

我检查文件是否已经存在的想法是:

if (!File.Exists(@"C:\Bestellungen.xlsx"))
{
    CreateNewHistory(); // Method which creates the file in correct format
}
WriteData(); // Method to write given information to correct cells
创建文件的方法很简单:

private void CreateNewHistory()
{
    Excel excel = new Excel();

    excel.CreateNewFile();
    excel.SaveAs(@"Bestellungen.xlsx");
    ...
    // some cells get writte here, just for format
    ...
    excel.Close();
}
“Bestellungen”是德语中“orders”的意思

我想这与我将路径传递到
File.Exist
的方式有关,但我就是不知道。我试图将文件复制到项目的bin\debug文件夹中。如果它在那里,它工作得很好,但我真的很想知道如何在documents文件夹中找到该文件。我已经尝试过放置绝对路径,但它总是返回false


如果您需要有关代码的更多信息,请告诉我,我对c#或基本上不熟悉编码。

使用文档文件夹保存您的文件

  • 获取用户文档文件夹

    String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    
  • 设置文件名

    string file="Bestellungen.xlsx";
    
  • 最后,生成您的实际路径

    String absolutePath  = System.IO.Path.Combine(path , file);
    

  • 使用文档文件夹保存文件

  • 获取用户文档文件夹

    String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    
  • 设置文件名

    string file="Bestellungen.xlsx";
    
  • 最后,生成您的实际路径

    String absolutePath  = System.IO.Path.Combine(path , file);
    

  • 您正在使用相对路径保存文件。该文件将保存在程序的工作目录中。使用
    C:\
    永远不会起作用。事实上,如果没有提升的权限,您甚至无法写入根文件夹<代码>程序文件是自1995年以来您无法(甚至不应该)保存到的另一个文件夹

    较旧的Windows版本只会引发异常。一些开发人员会尝试强制使用权限,而不是修复他们的bug,因此较新的版本会将不适当的写入重定向到例如
    文档
    APPDATA
    。我怀疑您是从
    程序文件
    运行程序的,操作系统将文件保存操作重定向到
    文档

    您应该使用绝对路径将文件保存在正确的文件夹中。用户文档转到
    documents
    ,应用程序文件转到
    APPDATA
    等。您可以使用
    Desktop
    MyDocuments
    等值中的一个来获取每个位置的绝对路径,例如:

    var docFolder=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var filePath=Path.Combine(docFolder,"Bestellungen.xlsx");
    excel.SaveAs(filePath);
    
    并以相同的方式检索它:

    var docFolder=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var filePath=Path.Combine(docFolder,"Bestellungen.xlsx");
    if (!File.Exists(filePath))
    ...
    
    SpecialFolder
    枚举说明了各种文件夹的用途:

    • MyDocuments
      包含当前用户的文档文件
    • 桌面
      指向当前用户的桌面
    • ApplicationData
      localapplicationdata
      包含当前用户使用的特定于应用程序的文件,如日志和设置等
    • CommonDocuments
      CommonDesktop
      CommonApplicationData
      包含计算机上所有用户使用的文件

    您正在使用相对路径保存文件。该文件将保存在程序的工作目录中。使用
    C:\
    永远不会起作用。事实上,如果没有提升的权限,您甚至无法写入根文件夹<代码>程序文件是自1995年以来您无法(甚至不应该)保存到的另一个文件夹

    较旧的Windows版本只会引发异常。一些开发人员会尝试强制使用权限,而不是修复他们的bug,因此较新的版本会将不适当的写入重定向到例如
    文档
    APPDATA
    。我怀疑您是从
    程序文件
    运行程序的,操作系统将文件保存操作重定向到
    文档

    您应该使用绝对路径将文件保存在正确的文件夹中。用户文档转到
    documents
    ,应用程序文件转到
    APPDATA
    等。您可以使用
    Desktop
    MyDocuments
    等值中的一个来获取每个位置的绝对路径,例如:

    var docFolder=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var filePath=Path.Combine(docFolder,"Bestellungen.xlsx");
    excel.SaveAs(filePath);
    
    并以相同的方式检索它:

    var docFolder=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var filePath=Path.Combine(docFolder,"Bestellungen.xlsx");
    if (!File.Exists(filePath))
    ...
    
    SpecialFolder
    枚举说明了各种文件夹的用途:

    • MyDocuments
      包含当前用户的文档文件
    • 桌面
      指向当前用户的桌面
    • ApplicationData
      localapplicationdata
      包含当前用户使用的特定于应用程序的文件,如日志和设置等
    • CommonDocuments
      CommonDesktop
      CommonApplicationData
      包含计算机上所有用户使用的文件

      • 由于权限问题,它会引发异常
        请更改目录或给予适当的权限

        由于权限问题,它将引发异常
        请更改目录或给予适当的权限

        您使用了相对路径来保存文件。该文件存储在应用程序的工作目录中,而不是'C:`。事实上,如果没有提升的权限,您无法将任何内容保存到磁盘的根文件夹。您正在系统驱动器的根目录中搜索文件。这个地方通常受到操作系统的保护,因此错误可能只是因为您没有在那里的权限。但是,您在当前文件夹中创建文件(未指定路径),因此,除非当前文件夹是系统驱动器的根目录,否则您正在检查文件夹并在另一个文件夹中创建文件,您可以使用-Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)访问文档文件夹;您正在C驱动器中搜索文件,并在应用程序文件夹中创建文件。这就是为什么会发生这种神奇的事情。您使用了相对路径来保存文件。该文件存储在应用程序的工作目录中,而不是'C:`。在fac