2016-07-22 135 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限制改爲更高的值以使其能夠使用長路徑。

相關問題