文件已存在异常file.copy

时间:2016-03-02 09:28:27

标签: c#

我正在尝试将驱动程序文件从我的应用程序文件夹复制到Windows 7中的驱动程序文件夹。但是当我运行此程序文件已经存在异常时,如果我手动检查驱动程序文件夹,该文件根本不存在。

Program.sDriverPath = Path.Combine(Program.sStartUpPath, @"windows7\amd64\MyDriver.sys");
string sPath = sDriverPath;
string sDestPath = Path.Combine(Environment.ExpandEnvironmentVariables(@"%windir%\system32"), @"drivers\MyDriver.sys");
MessageBox.Show("Source " + sDriverPath);
File.Copy(sDriverPath, sDestPath);

2 个答案:

答案 0 :(得分:1)

如果要覆盖现有文件,则需要使用the overload which has a boolean parameter

public static void Copy(
string sourceFileName,
string destFileName,
bool overwrite)

并为true指定overwrite

现在奇怪的是,你说文件根本不存在于目的地 - 我认为必须这样做,而你却找不到合适的位置。

尝试在致电File.Copy()之前立即在代码中设置断点并检查sDestPath参数。

我怀疑发生的事情是File System Redirector正在默默地将您的应用程序重定向到另一个文件夹。

请尝试检查文件夹%windir%\SysWOW64

最后,请注意,进程的用户必须以管理员身份运行才能将文件写入该位置。

答案 1 :(得分:0)

谢谢@Matthew Watson我找到了解决方案。 FSRedirector将system32文件夹重定向到SysWow64文件夹。转到syswow64文件夹然后转到驱动器文件夹,你会在那里找到你的文件。