解決 .NET 的 259 字元檔案路徑限制
在 .NET 中處理檔案通常涉及處理 FileInfo
類別施加的 259 個字元的路徑長度限制。 可以使用多種方法來克服此限制,具體取決於您的 .NET 版本。
對於 .NET Framework 4.6.2 及更高版本:
針對 .NET Framework 4.6.2 或更高版本的應用程式最簡單的解決方案是使用 \?
前綴。 根據 Microsoft 的記錄,在路徑前新增 \?C:
(或對應的磁碟機號碼)允許路徑最多包含 32,767 個字元。 例如:"\?\C:\Verrrrrrrrrrrry long path"
.
對於 .NET Core 和 .NET:
.NET Core 和更高版本的 .NET 自動支援長路徑,無需手動解決方法。 框架內部處理必要的長路徑語法。
對於 4.6.2 之前的 .NET Framework 版本:
對於較舊的 .NET Framework 版本(4.6.2 之前的版本),需要採用組合方法:透過 P/Invoke 將長路徑語法與 Unicode 相容的 Win32 API 呼叫結合使用。 這可以透過以下方式實現:
<code class="language-csharp">System.IO.Path.Combine("\\?\", System.IO.Path.GetFullPath(path));</code>
請記住,根據 Microsoft 的建議,使用此方法需要利用 Unicode API 函數來實現正確的長路徑相容性。
重要提示:
即使啟用了長路徑支持,Microsoft 的 BCL Team 部落格也強調了潛在的微妙之處。 某些 Windows API 對於長路徑的行為可能會有所不同;可能會出現路徑規範化失敗以及與某些應用程式或 Windows shell 本身不相容等問題。 Microsoft 正在積極努力提高未來 Windows 版本中對擴充檔案路徑的相容性和支援。
以上是如何處理 .NET 中超過 259 個字元的檔案路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!