.NET File.Create,之后无法删除文件

JL.*_*JL. 12 .net c# file-io

使用方法: System.IO.File.Create()

文件创建后,它仍然由进程使用,我无法删除它.

任何想法我怎么能更好地创建文件,应该是一个0byte文件,然后以某种方式关闭和处置?

nik*_*d23 28

JL,

您应该在using语句中包含对.Create的调用,以便正确关闭.Create返回的FileStream.IE:

using (File.Create("path")){...}
Run Code Online (Sandbox Code Playgroud)

  • 为清楚起见,我建议明确关闭一个空的`using`. (4认同)

Guf*_*ffa 15

Create方法不仅创建文件,还会打开它并返回可用于写入文件的FileStream对象.

您必须自己关闭文件,否则在垃圾收集器清理FileStream对象之前不会关闭它.

最简单的方法是使用Create方法返回的引用简单地关闭文件:

File.Create(fileName).Close();
Run Code Online (Sandbox Code Playgroud)


Yoo*_*eek 12

nikmd23有简短的回答,长答案是:FileStreamFile.Create(...)将返回不确定性正在布置的,因此它是当你试图将它删除文件句柄没有关闭.

正如nikmd23所说的那样,File.Create(...)用一个using语句包装你的调用将确保流被关闭并被处理掉:

using (FileStream fs = File.Create(path)) { 
  // do anything with the stream if need-be...
}
File.Delete(path); //after it's been disposed of.
Run Code Online (Sandbox Code Playgroud)

using(...)块实际上只是编译器 - 糖:

FileStream fs = File.Create(path);
try { 
   // do anything with the stream if need-be...
}
finally { 
  fs.Dispose();
}
File.Delete(path)
Run Code Online (Sandbox Code Playgroud)