在File.Create之后关闭文件

时间:2011-03-01 15:06:06

标签: c# file-io

我检查文件是否存在

if(!File.Exists(myPath))
{
    File.Create(myPath);
}

但是,当我使用这个新创建的文件创建StreamReader时,我收到错误消息

  

该进程无法访问文件'[我的文件路径],因为它正由另一个进程使用。

我无法调用File.Close(myPath)以便在创建后将其关闭,那么如何释放此资源以便我可以在以后的程序中打开它?

5 个答案:

答案 0 :(得分:135)

File.Create(string)返回FileStream class的实例。您可以在此对象上调用Stream.Close()方法以关闭它并释放它正在使用的资源:

var myFile = File.Create(myPath);
myFile.Close();

但是,由于FileStream实现IDisposable,您可以利用using statement(通常是处理此类情况的首选方式)。这将确保在您完成流程后关闭并正确处理流:

using (var myFile = File.Create(myPath))
{
   // interact with myFile here, it will be disposed automatically
}

答案 1 :(得分:42)

该函数返回FileStream个对象。因此,您可以使用它的返回值打开StreamWriter或使用对象的正确方法关闭它:

File.Create(myPath).Close();

答案 2 :(得分:4)

File.Create会返回FileStream个对象,您可以在其中调用Close()

答案 3 :(得分:3)

原因是因为从您的方法返回FileStream来创建文件。您应该将FileStream返回到变量中,或者在File.Create之后直接从它调用close方法。

最佳做法是让using块帮助您为这样的任务实现IDispose模式。也许更好的方法是:

if(!File.Exists(myPath)){
   using(FileStream fs = File.Create(myPath))
   using(StreamWriter writer = new StreamWriter(fs)){
      // do your work here
   }
}

答案 4 :(得分:2)

File.WriteAllText(file,content)

创建 写 靠近

File.WriteAllBytes--   type binary

:)