我有一个使用FileSystemWatcher对象跟踪本地文件夹更改的程序。 问题是,有时候,在某些环境和情况下(我不知道哪些),这个观察者在DOS路径上给我一个事件(" / Hello / How / Are / You"变成类似于& #34; / HE〜1 / HO〜1 / AR〜1 / YO〜1"。)
我正在寻找的是一种强制这条路径回到其完整和正常方面的方法。
或者至少可以告诉我路径确实是DOS路径的东西,所以我可以用不同的方式处理这个条目。
编辑:它必须在长路径(+260个字符)上工作,所以Path.GetFullPath(sShortPath)对我来说不起作用!
答案 0 :(得分:2)
Path.GetFullPath(@" / HE~1 / HO~1 / AR~1 / YO~1")应该做你需要的。
答案 1 :(得分:1)
最好的方法取决于您要查找的内容,如果您只想访问该文件,那么8byte文件名将适用于内部文件引用
如果要显示给用户或商店,则有2个选项
Path包含操作路径所需的大多数工具
fullPath = Path.GetFullPath(path1);
FileInfo和DirectoryInfo这两个类提供对文件和目录信息的持久访问权限,虽然可以使用任何有效路径创建它们,但它们都具有全名属性,可以提供对完整文件的访问权限路径
答案 2 :(得分:0)
正如其他人所说,Path.GetFullPath(sShortPath)如果不在非常长的路径(+260个字符)上使用,则可以正常工作。
这是我跟随的link对我有效。
来自kernel32.dll的GetLongPathName对我很好,我只需将255 StringBuilder限制更改为更高的值,使其适用于长路径。