File.ReadLines相对于应用程序可执行文件的路径?

时间:2014-03-03 04:48:45

标签: c# file filepath streamreader streamwriter

我正在阅读和写一些文本文件,而我目前正在使用设置路径。如何更改该设置路径以使用可执行文件所在的同一文件夹?

例如:

File.ReadLines(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt").Skip(1).ToList();

和...

File.WriteAllLines(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt", lines);

和...

using (StreamWriter writer = new StreamWriter(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt", true))
{
    writer.WriteLine(myText);
}

在IDE(Visual Studio)中进行测试时,它也需要工作。

3 个答案:

答案 0 :(得分:4)

路径相对于当前工作目录。在IDE中运行时,它将是可执行文件所在的目录。否则,它通常是您启动程序的目录。

因此,如果当前目录(在命令行上)是C:\ foo并输入命令“C:\ bar \ myprogram.exe”,则程序将以C:\ foo开头,如果您尝试打开文件“fooby.txt”,它将查找“C:\ foo \ fooby.txt”。

有关如何获取可执行文件路径的信息,请参阅How do I get the name of the current executable in C#?

答案 1 :(得分:1)

Assembly.GetEntryAssembly().Location

如果你在winforms app中,你可以使用

System.Windows.Forms.Application.StartupPath

默认情况下,它会指向当前目录,如@JimMischel所说。

因此,最好避免使用像File.ReadLines("names.txt");这样的文件名,而是提供完整的文件路径。

答案 2 :(得分:0)

您还可以使用Environment.CurrentDirectory获取当前的应用程序文件夹 查看LINK了解更多详情