很久没有写文件操作的方法了,记得之前写过一个类库是关于文件操作的,今天翻出来一看居然没有文件写入操作,于是临时加了一个(期间还询问了一下度娘,年纪大了,脑子不好使了)。
写完后发现报一个错误:cannot access a closed file,神马情况?第一反应是文件关闭了,没有读取到,但是印象中filestream不用显式打开的啊,后来懒得想了,debug一下最快捷了
于是,问题总算发现了,代码如下:
/// <summary>
/// 向文件中写入信息(文件不存在会创建文件)
/// </summary>
/// <param name="fileContent">文件内容</param>
/// <returns>写入的字节数</returns>
public static int WriteFile(string filePath,string fileContent)
{
FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate);
StreamWriter writer = new StreamWriter(fileStream);
writer.WriteLine(fileContent);
writer.Flush();
writer.Close();
fileStream.Flush();
fileStream.Close();
return fileContent.Length;
}
关闭对象的顺序不对
writer.close()执行后
fileStream.Flush()再执行,这个时候文件应该关闭了,怎么可能写入呢?于是调整代码顺序,问题解决;
/// <summary>
/// 向文件中写入信息(文件不存在会创建文件)
/// </summary>
/// <param name="fileContent">文件内容</param>
/// <returns>写入的字节数</returns>
public static int WriteFile(string filePath,string fileContent)
{
FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate);
StreamWriter writer = new StreamWriter(fileStream);
writer.WriteLine(fileContent);
writer.Flush();
fileStream.Flush();
writer.Close();
fileStream.Close();
return fileContent.Length;
}