我們不斷遇到這個問題...例:如果我有一個文件要復制到另一個目錄或UNC共享中,并且路徑長度超過248(如果我沒記錯的話),則拋出PathTooLongException。有沒有解決此問題的方法?PS:是否有任何注冊表設置將此路徑設置為更長的字符集?
3 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
BCL團隊對此進行了深入討論,請參閱博客條目。
本質上,沒有辦法在.Net代碼中執行此操作并堅持使用BCL。太多的函數依賴于能夠規范化路徑名(這立即觸發期望遵循MAX_PATH的函數的使用)。
您可以包裝所有支持“ \\?\”語法的win32函數,使用這些函數,您可以實現一套可識別長路徑的功能,但這會很麻煩。
由于大量工具(包括explorer [1])無法處理長路徑名,因此不建議沿這條路線走,除非您對與結果文件系統的所有交互都通過您的庫感到滿意(或感到滿意的工具數量有限)可以像robocopy一樣處理它)
為了滿足您的特定需求,我將調查直接使用robocopy是否足以執行此任務。
[1] Vista可以通過在后臺進行一些重命名來緩解該問題,但這充其量是脆弱的。
- 3 回答
- 0 關注
- 938 瀏覽
添加回答
舉報
0/150
提交
取消