2010-01-20 40 views
1

如果我在C#中使用文件,检查文件是否被锁定在C#中的最佳方法是什么?写入文件最佳实践(锁定文件/覆盖)

如果我使用File.OpenWrite(),它返回一个FileStream,并且这返回CanWrite = false,这是一种检查方式吗?

另外,写在我的代码中的一个位置是什么明智的?所以我指定了一个写入路径,像“TestExample.txt”,但是如果我运行我的代码,成功写入文件,再次运行,相同的数据将在那里。是否有可能完全覆盖文件中已有的数据?或者我需要手动删除(我知道这听起来很天真)。

感谢

回答

1

File.OpenWrite将抛出IOException如果文件被锁定,所以调用该方法,然后检查CanWrite属性不会是一个好方法。您需要尝试处理IOException

如果要替换文件的内容,你可以简单地写它(如果存在的话)之前将其删除:

try 
{ 
    if (File.Exists(fileName)) 
    { 
     File.Delete(fileName); 
    } 
    using (FileStream stream = File.OpenWrite(fileName)) 
    using (StreamWriter writer = new StreamWriter(stream)) 
    { 
     writer.Write("your content"); 
    }   
} 
catch (IOException) 
{ 
    // the file is locked 
}