而不是打开程序的文件路径,搜索并打开与程序相同的目录中的文件

时间:2013-11-24 13:58:45

标签: c#

这段代码要我提供一个文件路径,但我需要它在与程序相同的目录中打开testfile.txt,而不是通过给定的路径。有谁可以帮助我?

    private void button3_Click(object sender, EventArgs e)
    {
        string line;
        var file = new System.IO.StreamReader("C:\\Test\\testfile.txt");
        while ((line = file.ReadLine()) != null)
        {
            listBox1.Items.Add(line);
        }
    }

3 个答案:

答案 0 :(得分:1)

你可以使用这样的相对路径:

using (var file = new System.IO.StreamReader("testfile.txt"))
{
    while ((line = file.ReadLine()) != null)
    {
        listBox1.Items.Add(line);
    }
}

在这种情况下,testfile.txt被指定为可执行文件位置的相对路径。

您还会毫不怀疑地注意到我是如何在StreamReader语句中包含IDisposable using以确保正确处理并释放相关句柄,即使出现错误。

答案 1 :(得分:1)

如果您想确保从应用所在的同一文件夹中读取您的文件,请阅读其命令行。

使用Darin的例子:

using (var file = new System.IO.StreamReader(
                  Path.Combine(
                      Path.GetDirectoryName(
                             Environment.GetCommandLineArgs()[0]),
                     "testfile.txt"))
{
    while ((line = file.ReadLine()) != null)
    {
        listBox1.Items.Add(line);
    }
}

如果您只打开没有任何路径的文件,则使用CurrentDirectory,这可能会有所不同,如此代码的输出所示:

Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]).Dump();
Environment.CurrentDirectory.Dump();

所示:

  

C:\ Program Files(x86)\ LINQPad4
  E:\ PRJ

因为我从e:\prj的命令提示符启动了LinqPad。在这种情况下,打开或写入没有路径的文件使用目录e:\ prj来存储文件。

答案 2 :(得分:0)

谢谢你的队友。我无法相信自己没有想到这一点。代码本身正在使用路径。要使它在与程序相同的目录中打开一个文件,只需更改整个文件(“c:\ path \ path”); to(“filename.txt”);

   private void button3_Click(object sender, EventArgs e)
    {
        string line;
        var file = new System.IO.StreamReader("testfile.txt");
        while ((line = file.ReadLine()) != null)
        {
            listBox1.Items.Add(line);
        }
    }

P.S - 此代码是一个按钮,单击该按钮可在listBox1中打开名为testfile.txt的文件。