今天我遇到了一个奇怪的问题:由于应用程序的一年和多个版本/测试,以下代码已成功用于替换另一个文件。
File.Replace(path + ".tmp", path, null);
这在本地工作,也与UNC路径(网络共享)一起工作。但是今天我使用此代码替换UNC路径上的文件时出现以下错误(本地仍可正常工作):
该进程无法访问该文件,因为该文件正由另一个进程
使用
当我使用以下代码而不是上述代码时,它可以工作:
File.Delete(path);
File.Move(path + ".tmp", path);
所以我的问题:
我正在使用.Net Framework 4.0和Visual Studio 2010。
提前致谢。
答案 0 :(得分:5)
答案 1 :(得分:4)
答案 2 :(得分:0)
using System;
using System.IO;
namespace FileSystemExample
{
class FileExample
{
public static void Main()
{
try
{
string OriginalFile = path+"test.tmp";
string FileToReplace = path+"test2.tmp";
string BackUpOfFileToReplace = path+"test2.tmp.bac";
Console.WriteLine("Move the contents of " + OriginalFile + " into " + FileToReplace + ", delete " + OriginalFile +
", and create a backup of " + FileToReplace + ".");
// Replace the file.
ReplaceFile(@OriginalFile, @FileToReplace, @BackUpOfFileToReplace);
Console.WriteLine("Done");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadLine();
}
// Move a file into another file, delete the original, and create a backup of the replaced file.
public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)
{
File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);
}
}
}