写入文件最佳实践(锁定文件/覆盖)
问题描述:
如果我在C#中使用文件,检查文件是否被锁定在C#中的最佳方法是什么?写入文件最佳实践(锁定文件/覆盖)
如果我使用File.OpenWrite(),它返回一个FileStream,并且这返回CanWrite = false,这是一种检查方式吗?
另外,写在我的代码中的一个位置是什么明智的?所以我指定了一个写入路径,像“TestExample.txt”,但是如果我运行我的代码,成功写入文件,再次运行,相同的数据将在那里。是否有可能完全覆盖文件中已有的数据?或者我需要手动删除(我知道这听起来很天真)。
感谢
答
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
}