我正在使用System.IO.File.Create创建文件。我不是用流式编写器写它,只是创建它。System.IO.File.Create锁定文件
当应用程序尝试打开新创建的文件时,前端出现服务器错误 - 该文件正在使用中。垃圾收集似乎随之而来,几分钟后一切正常。
现在我知道如果我正在使用Streamwriter,我将不得不关闭它。这同样适用于创建?
我读过,打开一个流编写器的文件,然后立即关闭它会解决这个问题,但它似乎凌乱。有一种更简单的方法吗?
我正在使用System.IO.File.Create创建文件。我不是用流式编写器写它,只是创建它。System.IO.File.Create锁定文件
当应用程序尝试打开新创建的文件时,前端出现服务器错误 - 该文件正在使用中。垃圾收集似乎随之而来,几分钟后一切正常。
现在我知道如果我正在使用Streamwriter,我将不得不关闭它。这同样适用于创建?
我读过,打开一个流编写器的文件,然后立即关闭它会解决这个问题,但它似乎凌乱。有一种更简单的方法吗?
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
}
我不得不从来没有想过。 – Traubenfuchs 2016-07-04 19:14:46
创建文件会打开一个FileStream
,因此锁定它(File.Create
返回FileStream
)。
您必须关闭此流才能访问该文件。这是最好用using
语句来完成:
using(FileStream fs = File.Create(path))
{
}
Create
方法将返回一个文件句柄。在重新使用文件之前,文件句柄应该被关闭。请参阅MSDN文章File.Create Method (String)中的详细信息。
总结:
通过这种方法创建的FileStream对象具有无的默认文件共享值;在原始文件句柄关闭之前,没有其他进程或代码可以访问创建的文件。
使用File.Create
时,返回FileStream
。直到您关闭流或直到FileStream
对象被丢弃(由垃圾收集器的终结者),它将保持打开并锁定状态。
FileStream
实现IDisposable
这样你就可以做到以下几点:
using(FileStream fs = File.Create(filename))
{
// Do stuff like write to the file
}
的using
说法是“语法糖”,使编译器生成的代码,在功能上等同于:
FileStream fs = File.Create(filename)
try
{
// Do stuff like write to the file
}
finally
{
fs.Dispose();
}
的Dispose
方法在内部调用Close
。
我所用: System.IO.File.Create(sFullFileName);
以上.Create
方法没有关闭文件
我现在使用: System.IO.File.WriteAllText(sFullFileName, "Uploading");
此方法创建并关闭文件(注:我把字符串“上传”在文件中,但我相信string.Empty
也将工作。
让我们看看你的代码 – Kev 2011-01-13 13:00:09