在File.Create之后closures一个文件
我检查一下是否存在一个文件
if(!File.Exists(myPath)) { File.Create(myPath); }
但是,当我用这个新创build的文件创build一个StreamReader
时,我得到一个错误说
该进程无法访问文件'[我的文件path]',因为它正在被另一个进程使用。
没有可以调用的File.Close(myPath)
,以便在创build后closures它,那么如何释放此资源以便稍后在程序中打开它?
File.Create(string)
返回FileStream
类的一个实例。 您可以调用此对象上的Stream.Close()
方法,以closures它并释放它正在使用的资源:
var myFile = File.Create(myPath); myFile.Close();
但是,由于FileStream
实现了IDisposable
,所以可以利用using
语句 (通常是处理这种情况的首选方法)。 这样可以确保在完成处理后,可以正确closuresstream并进行处理:
using (var myFile = File.Create(myPath)) { // interact with myFile here, it will be disposed automatically }
该函数返回一个FileStream
对象。 所以你可以使用它的返回值来打开你的StreamWriter
或使用对象的正确方法closures它:
File.Create(myPath).Close();
File.Create
返回一个可以调用Close()
的FileStream
对象。
原因是因为从您的方法返回FileStream来创build一个文件。 您应该将FileStream返回到variables中,或者在File.Create之后直接从它调用close方法。
让use块帮助您实现这样的任务的IDispose模式是一个最佳实践。 也许更好的工作可能是:
if(!File.Exists(myPath)){ using(FileStream fs = File.Create(myPath)) using(StreamWriter writer = new StreamWriter(fs)){ // do your work here } }
File.WriteAllText(file,content)
创build写入closures
File.WriteAllBytes-- type binary
🙂