我检查文件是否存在
if(!File.Exists(myPath))
{
File.Create(myPath);
}
但是,当我使用这个新创建的文件创建StreamReader
时,我收到错误消息
该进程无法访问文件'[我的文件路径],因为它正由另一个进程使用。
我无法调用File.Close(myPath)
以便在创建后将其关闭,那么如何释放此资源以便我可以在以后的程序中打开它?
答案 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
:)