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也将工作。