为什么找不到或打开我的文件?

时间:2012-05-31 00:09:47

标签: c# winforms file-io nullreferenceexception

我在.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)

2 个答案:

答案 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"))