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