本人老菜鸟一枚,不是因为偶是菜鸟中的老手,而是偶是老了但是还是很菜的鸟╮(╯▽╰)╭,不过打今儿起偶想要腾飞……
今天写文本文件编辑类时遇到一个小问题,下面先将问题描述一下:
1、写文本文件时都会习惯性的判断一下文件是否存在,如果不存在就创建一个出来,也就是下面的代码
if (!File.Exists(logPath)) { File.Create(logPath); }
看起来似乎没什么问题,但是很不凑巧的,问题就是来了,下面几种写文本的方式,在第一次建立文本文件的时候数据都写不进去。
File.WriteAllText(logPath, msg);
File.WriteAllLines(logPath,msg);
byte[] buffer = Encoding.Default.GetBytes(msg); FileStream myFileStream = new FileStream(logPath, FileMode.Append, FileAccess.Write); myFileStream.Write(buffer, 0, buffer.Length); myFileStream.Close(); myFileStream.Dispose();
经查阅,由此方法创建的 FileStream 对象的 FileShare 值默认为 None;直到关闭原始文件句柄后,其他进程或代码才能访问这个创建的文件。也就是说必须要关闭,要关闭,要关闭,下面就是问题的解决办法:(https://msdn.microsoft.com/zh-cn/library/d62kzs03(VS.80).aspx)
if (!File.Exists(logPath)) { File.Create(logPath).Close(); }
其实,File.WriteAllText(),FileStream中好多写入文本的方法都默认新建文件,但是本老菜鸟还是觉得判断一下比较好,毕竟可以避免那些不会新建文件的方法报错。
欢迎指正,共同进步。