0

我正在executablePath 位置创建一个文本文件。

 Path.GetDirectoryName(Application.ExecutablePath) + "\\Paths.txt";

该应用程序运行良好,但由于某些奇怪的原因,当我检查可执行目录时,文本文件不存在。

我感觉它在其他位置创建文件,但我似乎找不到它。

我正在创建这样的文件;

string PathsDirectory =Path.GetDirectoryName(Application.ExecutablePath)+"\\Paths.txt";
TextWriter tw = new StreamWriter(PathsDirectory);
tw.WriteLine(Data);
tw.Close();

像这样阅读它;

string PathsDirectory =Path.GetDirectoryName(Application.ExecutablePath)+"\\Paths.txt";
TextReader tr = new StreamReader(PathsDirectory);
string line;
while ((line = tr.ReadLine()) != null)
{
}

我在 concat 之后检查了路径,一切看起来都很好,除了我在那里看不到文件。

好的,最后我找到了里面的文件;

C:\Users\Alican\AppData\Local\VirtualStore\Program Files (x86)\MyMovies\MyMovies

安装的

C:\Program 文件 (x86)\MyMovies\MyMovies

4

3 回答 3

1

利用Path.Combine(Assembly.GetExecutingAssembly().Location, "Paths.txt");

于 2013-07-24T21:18:01.120 回答
1

您应该在应用程序运行时考虑您的权限级别。

它进入VirtualStore文件夹的事实告诉我,您没有足够的权限按照您的意愿写入 ProgramFiles 目录。

尝试以管理员身份运行。通常,写入ProgramFiles目录是一个坏主意。我建议使用以下内容写入用户空间:

String PathsDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Paths.txt");

Environment.SpecialFolder枚举提供了所有标准用户可访问的位置,例如Desktop.

于 2013-07-25T10:51:16.087 回答
0

我试过了,它在我的电脑上工作:

string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\path.txt";
TextWriter tw = new StreamWriter(filePath);
tw.WriteLine("How are you?");
tw.Close();
Console.WriteLine(filePath);

我查看了目录内部,文件就在那里,其中包含我写的短语:

c:\CDash\tests\path\path\bin\Debug\path.txt
于 2013-07-24T21:41:40.100 回答