我在.bin \ Debug文件夹中添加了一个.txt文件,我试图打开它并像这样读取它:
using (StreamReader reader = File.OpenText("Credentials.txt")) {
string line = null;
do {
line = reader.ReadLine();
if (line.Contains("host=")) {
. . .
但是,虽然文件在那里,当我到达“ReadLine()”行时,它会停止在其轨道上:
System.NullReferenceException未处理 Message =对象引用未设置为对象的实例。
我必须将其从“do...while (line != null);
”更改为“while (! reader.EndOfStream)
”
答案 0 :(得分:6)
这没有意义。我不知道File.OpenText
成功返回并且返回值为null
的任何情况。如果File.OpenText
无法找到该文件,则会抛出FileNotFoundException
。
您确定您声明的行实际上是抛出异常的行吗?请仔细检查堆栈跟踪。
请注意,您的循环顺序错误。您正在调用StreamReader.ReadLine
,然后检查该行是否包含“host =”。但是可能是你已经到达流的末尾的情况,在这种情况下line
将为null并且你将抛出。重写循环的一种方法是说
while ((line = reader.ReadLine()) != null) {
if (line.Contains("host=")) {
}
}
我不是说这是最好的方式(我认为不是这样),但它是C#中常见的习语。
如果您坚持认为自己是正确的,请打印
的输出Console.WriteLine(reader == null);
,您将紧接在
之前line = reader.ReadLine();
线。
答案 1 :(得分:1)
尝试使用文件的完整路径:
using (StreamReader sr = new StreamReader("c:\\Users\\fullpath\\file.txt"))