你能帮我看看吗?
我在桌面上的文件夹中有一个 .dll 文件。
我需要将它复制到 c:\Program Files(86)\Program Folder\ 目录
我已经尝试过执行“File.Copy”,但我不知道如何使它与文件夹名称中的空格一起使用。试图将完整地址放在引号中 - 例如 "\"my folder\myfile.dll\"" 但它也不起作用。
试图编写一个 bash 文件 - 但无法弄清楚如何通过 C# 运行它。
请帮忙。任何解决方案表示赞赏。
如果可能,我还需要“强制覆盖”。
问问题
4047 次
2 回答
2
尝试:
File.Copy(@"c:\Program Files(86)\Program Folder\mydll.dll", @"C:\mydll.dll");
要强制覆盖,只需使用:
File.Copy(@"c:\Program Files(86)\Program Folder\mydll.dll", @"C:\mydll.dll",true);
根据MSDN 文档:
public static void Copy(
string sourceFileName,
string destFileName,
bool overwrite
)
参数
sourceFileName 类型:System.String 要复制的文件。
destFileName 类型:System.String 目标文件的名称。这不能是目录。
overwrite 类型:System.Boolean 如果目标文件可以被覆盖,则为 true;否则为假。
如另一个答案中所述,您可能没有适当的权限,您可以尝试通过以下方式检查:
string directoryPath = @"c:\Program Files(86)\Program Folder";
bool isWriteAccess = false;
try {
AuthorizationRuleCollection collection = Directory.GetAccessControl (directoryPath).GetAccessRules (true, true, typeof (System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule rule in collection) {
if (rule.AccessControlType == AccessControlType.Allow) {
isWriteAccess = true;
break;
}
}
} catch (UnauthorizedAccessException ex) {
isWriteAccess = false;
} catch (Exception ex) {
isWriteAccess = false;
}
if (!isWriteAccess) //we cant write to location
{
//handle notifications
} else { //we can write to the location
}
于 2012-09-07T18:37:18.633 回答
1
于 2012-09-07T18:36:36.910 回答