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

B. *_*non 0 c# file-io nullreferenceexception winforms

我在.bin\Debug文件夹中添加了一个.txt文件,我试图打开它并像这样读取它:

using (StreamReader reader = File.OpenText("Credentials.txt")) {
    string line = null;
    do {
        line = reader.ReadLine();
        if (line.Contains("host=")) {
    . . .
Run Code Online (Sandbox Code Playgroud)

但是,虽然文件在那里,当我到达"ReadLine()"行时,它会停止在其轨道中:

System.NullReferenceException未处理Message = Object引用未设置为对象的实例.

UPDATE

我不得不将它从" do...while (line != null);" 更改为" while (! reader.EndOfStream)"

jas*_*son 6

这没有意义.我不知道任何File.OpenText返回成功和返回值的情况null.如果File.OpenText找不到该文件,则会抛出一个FileNotFoundException.

你确定你说的那条线实际上是抛出异常的那一行吗?请仔细检查堆栈跟踪.

请注意,您的循环顺序错误.您正在调用StreamReader.ReadLine然后检查该行是否包含"host =".但是可能是你已经到达流的末尾的情况,在这种情况下line,你将抛出.重写循环的一种方法就是说

while ((line = reader.ReadLine()) != null) {
    if (line.Contains("host=")) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我不是说这是最好的方法(我认为不是这样),但它是C#中常见的习语.

如果你坚持认为你是对的,请打印输出

Console.WriteLine(reader == null);
Run Code Online (Sandbox Code Playgroud)

您将在紧接之前放置

line = reader.ReadLine();
Run Code Online (Sandbox Code Playgroud)

线.