StreamWriter不会写入不存在的文件

ann*_*sly 3 c# file-io xna filestream xna-4.0

我正在为我的游戏制作关卡编辑器,其中大部分都在工作,除了......当我尝试保存文件(XML)时,文件没有被创建,在输出框中我得到:

A first chance exception of type 'System.NullReferenceException'

有趣的是,只有当文件不存在时才会发生,但如果我覆盖另一个文件,它就能正常工作.

这是我正在使用的代码:

using (StreamWriter stream = new StreamWriter(filePath))
{
    stream.Write(data);
    stream.Close();
}
Run Code Online (Sandbox Code Playgroud)

data是一个字符串(这不是问题,因为它覆盖文件时有效)

Gra*_*mas 11

错过了一个构造函数,它接受一个可以帮助创建文件的布尔值:

using (StreamWriter stream = new StreamWriter(filePath, false)) {
    stream.Write(data);
    stream.Close();
}
Run Code Online (Sandbox Code Playgroud)

然而,逻辑实际上比这复杂得多:

public StreamWriter( string path, bool append )

确定是否将数据附加到文件.如果文件存在且append为false,则覆盖该文件.如果文件存在且append为true,则数据将附加到文件中.否则,将创建一个新文件.

  • 当使用`using`关键字时,你不需要调用`sw.Close()`,它会被自动处理.(这是首先使用`using`的全部意义) (3认同)