使用此方法,我遍历文件,删除其中带有'T'
的行并将其存储到列表中。在循环结束时,它应该退出,但是它读取null
值并继续传递它,并抛出异常并显示消息...
System.ArgumentNullException:'值不能为null。参数名称: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
的方法。经过测试,可以正常工作,它可以检索并显示所选文件的内容。
您正在调用ReadLine方法two次。第一次是在while循环条件下,第二次是在while体内。假设您的文件为3行,这是对ReadLine方法的调用:
line
变量。line
变量分配为null,然后在空字符串上调用Contains
方法。这就是异常的意思。请参阅更正的代码
FileStream FS = File.Open(@"c:\path_to_The_File", FileMode.Open);
List<string> list = new List<string>();
using (StreamReader Sr = new StreamReader(FS))
{
char c = 'T';
string line = Sr.ReadLine();
while (line != null)
{
//MessageBox.Show(line.ToString());
if (line.Contains(c))
{
list.Add(line);
// MessageBox.Show(line.ToString());
}
line = Sr.ReadLine();
}
FS.Close();
}