ホームページ >バックエンド開発 >C++ >.NET で 259 文字を超えるファイル パスを処理するにはどうすればよいですか?

.NET で 259 文字を超えるファイル パスを処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-16 19:56:11223ブラウズ

How Can I Handle File Paths Longer Than 259 Characters in .NET?

.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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。