真是太疯狂了!我已经使用 Far 2.0 创建了一个文件(http://www.farmanager.com/ http://www.farmanager.com/,也许您可以使用其他文件管理器);它的文件名是“C:\123.txt”(是的,文件路径末尾有空格).
我正在尝试使用 C# 程序复制或移动此文件:
File.Copy("C:\\123.txt ", "C:\\456.txt", true);
但它失败并显示“无法找到文件‘C:\123.txt’。”例外。但该文件存在!
我正在尝试 Windows API:
[DllImport("kernel32.dll")]
public static extern int MoveFile(string lpExistingFileName, string lpNewFileName);
MoveFile("C:\\123.txt ", "C:\\456.txt",);
但它也失败了。
我正在尝试 xcopy 实用程序:
C:\>xcopy "C:\123.txt " "C:\456.txt" /Y
File not found - 123.txt
0 File(s) copied
如何以编程方式重命名该文件?为什么会发生这种情况?
我的操作系统:Windows 7 x64
您的文件名中有一个在 Win32 中非法的字符。要绕过 Win32 路径解析器,您只需在文件名前添加前缀即可\\?\
。例如:
MoveFile(@"\\?\C:\123.txt ", "C:\\456.txt");
此技术还允许您拥有长达 32k 的路径(在 Win32 中,您只能获得 260,包括驱动器号)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)