初始文件路径: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可以用一些内置函数格式化?