C#应用程序相对路径

时间:2016-05-05 03:08:05

标签: c# path streamreader streamwriter

我刚刚开始学习C#,看起来当你编写输出文件或读取输入文件时,你需要提供如下的绝对路径:

        string[] words = { "Hello", "World", "to", "a", "file", "test" };
        using (StreamWriter sw = new StreamWriter(@"C:\Users\jackf_000\Projects\C#\First\First\output.txt"))
        {
            foreach (string word in words)
            {
                sw.WriteLine(word);
            }
            sw.Close();
        }

MSDN的示例使您在实例化StreamWriter时需要提供绝对目录:

https://msdn.microsoft.com/en-us/library/8bh11f1k.aspx

我用C ++和Python编写过,在访问这些语言的文件时,您不需要提供绝对目录,只需要来自可执行文件/脚本的路径。每次要读取或写入文件时都必须指定绝对路径,这似乎很不方便。

有没有快速的方法来获取当前目录并将其转换为字符串,并将其与outfile字符串名称相结合?并且使用绝对目录是不错的风格还是首选,如果可能的话,快速将它与“当前目录”字符串结合起来?

感谢。

2 个答案:

答案 0 :(得分:4)

您不需要每次都指定完整目录,相对目录也适用于C#,您可以使用以下方式获取当前目录 -

获取应用程序的当前工作目录。

string directory = Directory.GetCurrentDirectory();

获取或设置当前工作目录的完全限定路径。

string directory = Environment.CurrentDirectory;

获取程序可执行路径

string directory = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

Resource Link 1 Resource Link 2

答案 1 :(得分:1)

挑衅,您不需要指定完整路径,执行此类标准的好方法是什么?

应使用相对路径@ p.s.w.g通过评论提及使用Directory.GetCurrentDirectoryPath.Combine

通过流动方式指定一些

您可以使用.exe

获取应用的System.Reflection.Assembly.GetExecutingAssembly().Location.位置
string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string exeDir = System.IO.Path.GetDirectoryName(exePath);
DirectoryInfo binDir = System.IO.Directory.GetParent(exeDir);
另一方面,

在内部,获取Environment.CurrentDirectory时,它会调用Directory.GetCurrentDirectory,设置Environment.CurrentDirectory时会调用Directory.SetCurrentDirectory

选择一个喜欢并随身携带。

谢谢你欢迎C#我希望它能帮助你前进