web-dev-qa-db-ja.com

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

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

57
Ron Tuffin

最大パス長 (MSDNから)

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

49
Adam Matan

XPファイルパス-250文字

Vistaファイルパス-260文字

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

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

Windows XPは、255文字までの長さのファイル名を許可します

Windows Vistaでは、260文字までの長いファイル名を使用できます。

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

15
joe

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

こちら を参照してください。

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

また、最大パス長についてより詳細に説明している SOでの私の回答 を調べることもできます。

8
ST3

「クラシック」の制限は260文字です:drive letter + :\ + 255 characters of filename + \(または丸め)+ null terminator他の回答で述べたとおり

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

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

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

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

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

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

2
phuclv