Подтвердить что ты не робот

File.Copy(sourceFileName, destFileName, overwrite) не работает на некоторых ОС

Я вижу странные ошибки со следующим фрагментом кода:

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() больше не синхронно или что-то еще изменилось на разных ОС в этом отношении?

Совершенно откровенно, я в тупике. Сначала я подумал о проблемах с синхронизацией и попытался обернуть вызов "Копировать" в новом потоке, пока я не прочитаю "File.Copy" (), который никогда не вернется, прежде чем копировать успешно или запутать ошибку.

4b9b3361

Ответ 1

Вы можете попробовать этот код. (Pls меняет пути к вашим)

 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);
    }

Ответ 2

Вы можете попробовать использовать каталог "C:\ProgramData...", и это решит проблему, если это связано с проблемой разрешения на Windows 10.

Вы можете сослаться на http://www.geeksquad.co.uk/articles/how-to-set-up-file-sharing-on-windows-10, чтобы получить справку для обмена папками.