File.Replace - 另一个进程错误正在使用文件

时间:2014-02-24 13:00:00

标签: c# file-io ioexception

问题背景:

我试图使用以下'File.Replace'方法用我的C盘上文件夹中的另一个指定文件的内容覆盖一个指定文件的内容:

//'null' has been set to the 'backup file' parameter as I do not need this.
File.Replace(fileOnesLocation, filesTwosLocation, null);

错误:

我将上面的方法包装在try catch中,并且我当前收到以下错误:

System.IO.IOException: The process cannot access the file 
because it is being used by another process.

有人能指出我在哪里出错的正确方向吗?

3 个答案:

答案 0 :(得分:4)

如果您想避免此错误,可以尝试执行this answer之类的操作,创建一种方法来检查您的文件是否已打开。

protected virtual bool IsFileLocked(FileInfo file)
{
    FileStream stream = null;

    try
    {
        stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    }
    catch (IOException)
    {
        //the file is unavailable because it is:
        //still being written to
        //or being processed by another thread
        //or does not exist (has already been processed)
        return true;
    }
    finally
    {
        if (stream != null)
            stream.Close();
    }

    //file is not locked
    return false;
}

答案 1 :(得分:0)

如果您或其他登录用户打开了该文件,则可能无法打开该文件。

在用户管理中检查用户的进程并关闭文件。

答案 2 :(得分:-1)

当代码运行时,您或某人/某物正在替换或写入文件时,通常会导致此错误。