【发布时间】:2020-03-26 02:33:50
【问题描述】:
使用这种方法,我正在遍历一个文件,删除其中包含'T' 的行并将它们存储到一个列表中。在循环结束时它应该退出,但是它会读取 null 值并继续传递它并抛出带有消息的异常...
System.ArgumentNullException: '值不能为空。参数名称:source'
...在它试图寻找字符的地方。
public static List<string> GetToolsFromFile()
{
FileStream FS = new FileStream(OpenFile(), FileMode.Open);
List<string> list = new List<string>();
using (StreamReader Sr = new StreamReader(FS))
{
char c = 'T';
while (Sr.ReadLine() != null)
{
string line = Sr.ReadLine();
//MessageBox.Show(line.ToString());
if (line.Contains(c))
{
list.Add(line);
// MessageBox.Show(line.ToString());
}
}
FS.Close();
}
return list;
}
OpenFile() 是使用OpenFileDialog 的方法。在检索和显示所选文件的内容时,它已经过测试并正常工作。
【问题讨论】:
-
OpenFile() 是一种使用它的方法。它打开并读取文件。它显示了我需要存储的每一行。当涉及到文件末尾时,它会抛出异常。
-
如果
OpenFile()返回null怎么办?在继续之前,您应该检查一下。 -
JQSOFT 如果 OpenFile() 返回 null 那么它将如何读取我选择的文件?感谢您的努力,但 Youssef13 为我解决了这个问题。
-
@SnoopDog 您不应该将解决方案编辑到您的问题中。这就是接受答案的目的,现在这个问题在提供已经有效的代码时对未来的读者来说没有意义。
标签: c# while-loop streamreader argumentnullexception