写入文件最佳实践(锁定文件/覆盖)

时间:2010-01-20 22:11:51

标签: c#

如果我正在使用C#中的文件,检查文件是否在C#中被锁定的最佳方法是什么?

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

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

由于

1 个答案:

答案 0 :(得分:1)

如果文件被锁定,

File.OpenWrite将抛出IOException,因此调用该方法然后检查CanWrite属性将不是一个好方法。您需要一个try-catch来处理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
}