如何将DOS路径转换为正常路径(.net)

本文关键字:路径 常路径 net DOS 转换 | 更新日期: 2023-09-27 17:58:21

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

我正在寻找的是一种方法,迫使这条道路回到其完整和正常的方面。

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

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

如何将DOS路径转换为正常路径(.net)

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

最佳方法取决于您要查找的内容,如果您只想访问一次文件,那么8字节的文件名将适用于内部文件引用

如果你想向用户或商店显示,那么有两个选项

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

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

正如其他人所说,Path.GetFullPath(sShortPath)如果不在很长的路径(+260个字符)上使用,效果很好。

这是我关注的一个对我有用的链接。

kernel32.dll中的GetLongPathName对我来说很好,我只需要将255 StringBuilder的限制更改为更高的值,就可以使用长路径。