"Файл не найден" при копировании файла с русскими символами или пробелами в пути
Изначальный путь к файлу: C:\Users\101\Pictures\Снимок экрана 2023-02-15 115721.png
Получаю путь к файлу от пользователя с помощью
var dialog = new Microsoft.Win32.OpenFileDialog();
var PickedFilePath = new Uri(System.IO.Path.GetFullPath(dialog.FileName));
В PickedFilePath.AbsolutePath
в итоге лежит такой путь: C:\Users\101\Pictures\%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202023-02-15%20115721.png
и при попытке выполнить копирование
var fileExt = Path.GetExtension(PickedFilePath.AbsolutePath);
Directory.CreateDirectory(Globals.ImagesPath);
var file = new FileInfo(PickedFilePath.AbsolutePath);
file.CopyTo(Globals.ImagesPath + "\\" + "copy" + fileExt, true);
получаю ошибку
Файл 'C:\Users\101\Pictures%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202023-02-15%20115721.png' не найден.
Тоже самое происходит, если в пути есть пробелы. Сначала заменял через .Replace('%20', " ")
, но с русскими символами делать такого не вижу смысла, должны же быть другие пути?
При копировании файлов только с английскими символами или цифрами без пробелов в пути все копируется без ошибок. Как копировать файлы с русскими символами и пробелами в пути? Может строку PickedFilePath
можно форматировать какой-то встроенной функцией?