这段代码要我提供一个文件路径,但我需要它在与程序相同的目录中打开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);
}
}
答案 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的文件。