gpt4 book ai didi

c# - File.Copy(sourceFileName,destFileName,overwrite) 在某些操作系统上不起作用

转载 作者:可可西里 更新时间:2023-11-01 08:50:06 26 4
gpt4 key购买 nike

我看到以下代码片段出现奇怪的错误:

File.Copy(oldPath, targetPath,true);
File.SetAttributes(targetPath, FileAttributes.Normal);

一个文件必须移动到其他地方,因为我在源路径上没有写权限,所以我复制了文件并为目标文件设置了访问权限。在我的系统 (Windows 7 SP1) 上,这工作正常。

但是,在(据我所知)任何 Windows 10 机器上,程序在 File.SetAttributes 处崩溃并显示消息

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not find file 'C:\ProgramData\...\BlankDb.sdf'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.SetAttributes(String path, FileAttributes fileAttributes)

这告诉我即使代码已经通过了 File.Copy() 行,文件还没有被成功复制。 File.Copy() 是否不再同步工作,或者在这方面在不同的操作系统上有什么其他改变吗?

坦率地说,我很难过。起初我想到了时间问题并尝试将 Copy 调用包装在一个新线程中,直到我读到 File.Copy() 在复制成功或遇到错误之前无论如何都不会返回。

最佳答案

你可以试试这段代码。 (请将路径更改为您的路径)

 static void Main(string[] args)
{
var oldDir = new DirectoryInfo("D:\\Personal\\Projects\\Desktop\\StackSolutions\\ConsoleApp1\\ConsoleApp1\\OldFilePath\\funy.jpg");
var newDir = new DirectoryInfo("D:\\Personal\\Projects\\Desktop\\StackSolutions\\ConsoleApp1\\ConsoleApp1\\NewFilePath\\funy1.jpg");

var oldPath = oldDir.FullName;
var targetPath = newDir.FullName;

File.Copy(oldPath, targetPath);
File.SetAttributes(targetPath, FileAttributes.Normal);
}

关于c# - File.Copy(sourceFileName,destFileName,overwrite) 在某些操作系统上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33671053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com