.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 チームのブログでは潜在的な微妙な点を強調しています。 一部の Windows API は、長いパスでは動作が異なる場合があります。パスの正規化の失敗や、特定のアプリケーションまたは Windows シェル自体との非互換性などの問題が発生する可能性があります。 Microsoft は、将来の Windows リリースでの互換性と拡張ファイル パスのサポートの向上に積極的に取り組んでいます。
以上が.NET で 259 文字を超えるファイル パスを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。