2010-09-16 78 views
1

我找不到这个问题的解决方案:读取文件的问题

我写一个程序,读取目录中的所有文件,并把它们放入一个列表框。 当用户从列表框中选择一个文件,该程序读取选定的文件,并打印出一些信息...

问题是,在第一次选择我的程序“停止工作”。他不会崩溃,但是当我尝试选择另一个文件时,他什么都不做。

我想通了,这个问题是:

private String porocilo(String s) 
{ 
file = "/path to file/"; 
TextReader tr = new StreamReader(file); //<- problem here 
//... 
tr.close(); 
return someinfo; 
} 
//.. 
//Call function: 
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
label1.Text = porocilo(listBox1.SelectedItems[0].ToString()); 
} 

去除(问题)通常排列在程序选择文件后,但没有这个我不能阅读文件和我的程序没有做任何东西。

有人能告诉我我哪里错了吗?

BR,Wolfy

回答

2

如果您发布的代码确实是您所使用的代码(加上缺少分号),那么你就没有看到什么情况发生的原因是因为你的代码保持打开和读取同一个文件,而不是文件用户选择。您正在将file设置为一个常量路径/文件名并从中读取,并且您没有使用s参数。

+0

我的错误:) file =“/ path to file /”+ s – Wolfy 2010-09-16 10:09:30

+1

@Wolfy:请使用'Path.Combine'而不是斜杠。 :) – Timwi 2010-09-16 10:37:42

0

它看起来像你有你的porocilo方法的硬编码路径。也就是说,新的StreamReader正在采用它作为参数,文件而不是s。 所以它只会打开一个文件,而不是你选择的文件。

private String porocilo(String s) 
{ 
//file = "/path to/file" // not sure what this is...??? 
TextReader tr = new StreamReader(s); //<- fix here 
//... 
tr.close(); 
return someinfo; 
} 
+0

如果你有时间,你可以添加代码来验证文件是否存在,以及其他各种事情。 – 2010-09-16 10:02:23

+0

该文件存在,因为我通过阅读它来获取此列表... – Wolfy 2010-09-16 10:21:22

0

在您的列表框中选择指数变化的方法,你需要分配选定值如下图所示

//Call function: 
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
label1.Text = porocilo(listBox1.SelectedItem.Text); 
}

还要检查你的“porocilo”功能,它使用的参数corectly

+0

porocilo参数工作正常,当我删除TextReader tr =新的StreamReader(文件);文件路径正在改变...... – Wolfy 2010-09-16 10:20:17