2016-07-22 139 views
0

我有一个使用FileSystemWatcher对象跟踪本地文件夹更改的程序。 问题是,有时候,在某些环境和情况下(我不知道哪些环境和情况),这个观察者给我一个DOS路径上的事件(“/ Hello/How/Are/You”变得像“/ HE〜1/HO〜1/AR〜1/YO〜1" )。如何将DOS路径转换为正常路径(.net)

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

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

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

+0

你尝试过'Path.GetFullPath'吗? –

回答

2

Path.GetFullPath(@“HE 1/HO_1/AR_1/YO_1”)应该做你所需要的。

+0

我会尽快测试!感谢您的快速回答! – Matthieu

+0

好吧,其实它不适合我,因为我需要它与长途工作。看到我的答案为我的解决方案!是的,我会用长路径精度更新我的帖子;) – Matthieu

1

最好的方法取决于你在找什么,如果你只是想一次访问该文件,然后将8字节的文件名会为内部文件引用

工作,如果你想显示给用户或然后存储在那里2个选项

  1. Path包含你最需要操纵路径 fullPath = Path.GetFullPath(path1);

  2. FileInfo和0的工具这2类提供的文件和目录信息的持久连接,而他们可以用任何有效的路径创建都有一个全名属性,用于访问的完整路径

+0

我想补充一点,即8字节路径中的数字可以随时间变化(尽管这可以是特定于版本的),所以这样短即使作为内部文件引用,路径也不应该长时间存储。 –

0

正如有人说,Path.GetFullPath( sShortPath)工作正常,如果不是在很长的路径上使用(+260个字符)。

这是一个link我跟着,为我工作。

kernel32.dll中的GetLongPathName与我一起工作得很好,我只需将255 StringBuilder限制改为更高的值以使其能够使用长路径。

相关问题