如何将DOS路径转换为普通路径(.net)

时间:2016-07-22 08:40:19

标签: c# .net filesystemwatcher

我有一个使用FileSystemWatcher对象跟踪本地文件夹更改的程序。 问题是,有时候,在某些环境和情况下(我不知道哪些),这个观察者在DOS路径上给我一个事件(" / Hello / How / Are / You"变成类似于& #34; / HE〜1 / HO〜1 / AR〜1 / YO〜1"。)

我正在寻找的是一种强制这条路径回到其完整和正常方面的方法。

或者至少可以告诉我路径确实是DOS路径的东西,所以我可以用不同的方式处理这个条目。

编辑:它必须在长路径(+260个字符)上工作,所以Path.GetFullPath(sShortPath)对我来说不起作用!

3 个答案:

答案 0 :(得分:2)

Path.GetFullPath(@" / HE~1 / HO~1 / AR~1 / YO~1")应该做你需要的。

答案 1 :(得分:1)

最好的方法取决于您要查找的内容,如果您只想访问该文件,那么8byte文件名将适用于内部文件引用

如果要显示给用户或商店,则有2个选项

  1. Path包含操作路径所需的大多数工具 fullPath = Path.GetFullPath(path1);

  2. FileInfoDirectoryInfo这两个类提供对文件和目录信息的持久访问权限,虽然可以使用任何有效路径创建它们,但它们都具有全名属性,可以提供对完整文件的访问权限路径

答案 2 :(得分:0)

正如其他人所说,Path.GetFullPath(sShortPath)如果不在非常长的路径(+260个字符)上使用,则可以正常工作。

这是我跟随的link对我有效。

来自kernel32.dll的GetLongPathName对我很好,我只需将255 StringBuilder限制更改为更高的值,使其适用于长路径。