该进程无法访问该文件,因为它正被另一个进程错误使用

时间:2013-12-30 13:05:42

标签: c# file file-io

这是我的代码:

public static bool createFile(string dir) {
        dir="c:\\e.bat";
        System.IO.File.Create(dir);


            if (System.IO.File.Exists(dir))
            {
                try
                {
                    StreamWriter SW;
                    SW = System.IO.File.CreateText(dir);
                    SW.WriteLine("something ");
                    SW.Close();
                }
                catch (Exception e)
                {
                    Console.Write(e.Message);
                    Console.ReadLine();
                    return false;
                }                    
            }
            return true;            
    }

这里dir是当前目录。我正面临错误进程无法访问该文件,因为它正被另一个进程使用。我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:10)

您在方法的开头调用File.Create - 这会返回一个保持打开状态的流。目前尚不清楚为什么你会这么说,但我建议你删除那条线。

您还应该使用using语句,仅捕获特定的异常,使用适当的using指令,并遵循.NET命名约定。例如:

using System.IO;

...

public static bool CreateFile(string file)
{
    using (var writer = File.CreateText(file))
    {
        try
        {
            writer.WriteLine("something ");
        }
        catch (IOException e)
        {
            // TODO: Change the handling of this. It's weird at the moment
            Console.Write(e.Message);
            Console.ReadLine();
            return false;
        }
    }
    return true;            
}

我已经删除了对现有文件的检查,因为之前的代码始终存在,因为您刚刚创建了它。

您还应该考虑使用File.WriteAllText作为编写文件的简单方法。