Windowsが処理できる最長のファイルパスは何ですか?


回答:


48

最大パス長(MSDNから)

Windows API(次の段落で説明するいくつかの例外を除く)では、パスの最大長はMAX_PATHであり、これは260文字として定義されています。ローカルパスは、ドライブ文字、コロン、バックスラッシュ、バックスラッシュで区切られたコンポーネント、および終端のヌル文字の順序で構成されます。たとえば、ドライブDの最大パスは「D:\ <256文字のパス文字列> <NUL>」です。「<NUL>」は、現在のシステムコードページの非表示の終了ヌル文字を表します。(ここでは文字<>は見やすくするために使用されており、有効なパス文字列の一部にすることはできません。)


4
`\\?`をプレフィックスとして付けることで、この制限を超えるパスを処理できることに言及する必要があります(その文字列であったと思います)。
ジョーイ

3
また、2番目の段落で言及されているunicode-pathsの制限を記述する必要があります。〜32k
akira

260?drive:\およびターミネータを無視する256文字。それは2009年です、なぜ私たちは遊んでいるキャラクターのバイトだけを得るのですか?
Phoshi

@Phoshi長いパスを使用するAPIは、デフォルトではOSによって使用されません。パスを知っている開発者が作成した不完全なアプリケーションに任意の長い文字列を渡すと、260文字より長くなることはなく、固定長を割り当てることになります配列を保持すると、アプリケーションのクラッシュや悪用につながる膨大な数のバッファオーバーフローが発生します。同じ誤認識を持つ開発者によるわずかに優れた実装は、パス検証で長すぎるエラーが報告されたため中止されます。
ダンニーリー

15

XPファイルパス-250文字

Vistaファイルパス-260文字

Windows XPのクリーンインストールでの最長パスは152文字です。

Windows Vistaのセミクリーンインストールでの最長パスは195文字です。

Windows XPでは、255文字までのファイル名を使用できます

Windows Vistaでは、最大260文字を含むさらに長いファイル名を使用できます。

http://www.codinghorror.com/blog/archives/000729.html


5
これはunicode-apiを使用しない場合に当てはまります。unicode-apiは制限を少し拡張します(〜32k、msdn.microsoft.com / en-us / library /…を参照)
akira

1
うーん。その場合、Win7の制限は約265文字である必要がありますか?
いんちきのキホーテ

なぜ制限が10文字増えるのですか?それは価値がないようです、それを行います:\
Phoshi

これは間違っています。それはNTFSの制限なので、最大ファイル名の長さは、まだ任意のWindowsで255文字です
phuclv

8

MAX_PATH他の答えが言うように、Windows定数は260ですが、実際の最長パスは32767です。

こちらをご覧ください

32kはUNICODEの使用中ですが、今では使用する必要があるため、このような最大パス長も使用する必要があります。

また、SOでの私の答えを見てみましょう。これは、最大パス長についてさらに詳しく説明しています。


1

「古典的な」制限は260の文字:drive letter+ :\+ 255 characters of filename+ \(または丸め)+ null terminator他の回答で述べたように

ただし、実際の内部制限は32767文字です。これは\\?\完全修飾パスを取得するため追加することで実現できます

Windows APIには、最大合計パス長が32,767文字の拡張長パスを許可するUnicodeバージョンもある多くの関数があります。このタイプのパスは、バックスラッシュで区切られたコンポーネントで構成され、それぞれlpMaximumComponentLengthGetVolumeInformation関数のパラメーターで返される値(この値は通常255文字)までです。拡張長パスを指定するには、"\\?\"プレフィックスを使用します。たとえば、"\\?\D:\very long path"

何らかの理由で完全修飾パスを使用できない場合は、subst/ を使用してドライブ文字にマウントするdiskpartか、ジャンクション / シンボリックリンクを作成してパスを短縮することにより、より深いディレクトリにアクセスできます。

Windows 10以降、MAX_PATH制限は削除されましたが、デフォルトではありません

Windows 10バージョン1607以降、MAX_PATH一般的なWin32ファイルおよびディレクトリ機能から制限が削除されました。ただし、新しい動作をオプトインする必要があります。

https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.