System.IO.File.Createlocking一个文件
我正在使用System.IO.File.Create创build一个文件。 我不是用stream式编写器写的,只是创build它。
当应用程序尝试打开新创build的文件时,前端出现服务器错误 – 文件正在使用中。 垃圾收集似乎来了,几分钟后,一切都OK。
现在我知道如果我正在使用Streamwriter,我将不得不closures它。 这同样适用于创build?
我读过,打开一个stream写入器的文件,然后立即closures它将解决这个问题,但似乎凌乱。 有一个更简单的方法吗?
File.Create
返回一个FileStream
。 你应该像这样使用它:
using (FileStream fs = File.Create(path)) { //you can use the filstream here to put stuff in the file if you want to }
尝试这个:
System.IO.File.Create(FullFName).Close();
创build文件将打开一个FileStream
,因此locking它( File.Create
返回FileStream
)。
您必须closures此stream才能访问该文件。 这最好用一个using
语句来完成:
using(FileStream fs = File.Create(path)) { }
当使用File.Create
你得到一个FileStream
返回。 直到你closuresstream或直到FileStream
对象被丢弃(由垃圾收集器的终结者)它将保持打开并locking。
FileStream
实现了IDisposable
所以你可以做到以下几点:
using(FileStream fs = File.Create(filename)) { // Do stuff like write to the file }
using
语句是“语法糖”,并导致编译器生成的代码在function上等同于:
FileStream fs = File.Create(filename) try { // Do stuff like write to the file } finally { fs.Dispose(); }
Dispose
方法在内部调用Close
。
Create
方法将返回一个文件句柄。 在重新使用文件之前应该closures文件句柄。 请参阅MSDN文章File.Create方法(string)中的详细信息。
概要:
通过此方法创build的FileStream对象具有默认的FileShare值None; 没有其他进程或代码可以访问创build的文件,直到原始文件句柄closures。
我正在使用: System.IO.File.Create(sFullFileName);
上面的.Create
方法没有closures文件
我现在使用: System.IO.File.WriteAllText(sFullFileName, "Uploading");
这个方法创build并closures文件(注意:我把一个string“上传”在文件中,但我相信string.Empty
也将工作。