web-dev-qa-db-ja.com

NTFSでの最大ファイル名の長さ(Windows XPおよびWindows Vista)

私はアップロードされたファイルのファイル名を保持するデータベーステーブルを設計しています。 Windows XPまたはVistaで使用されているNTFSのファイル名の最大長はいくつですか?

240
GateKiller

ファイル名の個々の構成要素(すなわち、パスに沿った各サブディレクトリ、および最終的なファイル名)は、255文字に制限されており、合計パス長は、約32,000文字に制限されている。

ただし、Windowsでは、MAX_PATH値(ファイルの場合は259文字、フォルダの場合は248文字)を超えることはできません。詳細については、 http://msdn.Microsoft.com/ja-jp/library/aa365247.aspx を参照してください。

264
Adam Rosenfield

257文字です。正確に言うと、NTFS自体では、最大ファイル名の長さは数千文字(約30'000何か)です。ただし、Windowsでは、Path + Filenameに最大260文字の長さが設定されています。 drive +フォルダは少なくとも3文字を占めるので、257になります。

25
Alphager

これは、長いファイル名でファイルを保存しようとしたときに、フレームワーク4.5で「未処理の例外」と表示されることです。

指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は260文字以下、ディレクトリ名は248文字以下でなければなりません。 。

screenshot

24
SturmCoder

Windowsでは199 XP NTFS、確認しました。

これは理論ではなく、単に私のラップトップを試着することによるものです。軽減効果があるかもしれませんが、物理的にそれを大きくすることはできません。

これを制限する他の設定はありますか?自分で試してみてください。

15
dove

MSDN によると、260文字です。これには、"<NUL>" - 見えない終端のヌル文字が含まれるため、実際の長さは259です。

しかし、この記事を読んでください、もう少し複雑です。

13
Kibbee

NTFSの長さは255です。NTFSの$Filename属性のNameLengthフィールドは、オフセットのないバイトです。これは0から255の範囲をもたらします。

ファイル名iselfは、異なる「名前空間」に入れることができます。これまでのところ:POSIX、WIN32、DOSそして(WIN32DOS - ファイル名が元々DOS名になることができるとき)。 (文字列には長さがあるので、に\ 0を含めることができますが、問題が生じる可能性があり、上記の名前空間にはありません。)

したがって、ファイルまたはディレクトリの名前は最大255文字です。 Windowsでフルパスを指定する場合は、 の前に\\?\を付ける必要があります(または\\?\ UNC\serverを使用します)。 UNCパスの場合は\ share) を使用して、このパスを拡張パスとしてマークします(〜32k文字)。パスが長い場合は、作業ディレクトリを途中で設定する必要があります(プロセス全体の設定による非常に悪い副作用)。

12
Dominik Weber
7
warren

上記の承認済み回答にこれを追加します。

明確にするために、人々がそれを255から260文字であると信じているのは、それがWindowsエクスプローラでサポートされているすべての理由によるからです。それよりも長いファイル名でファイルをコピーするようなことをするとエラーになります。しかし、プログラムはもっと長いファイル名を読み書きすることができます(これはExplorerが最初に不平を言う長さになる方法です)。このような状況でのマイクロソフトの "推奨される修正"は、それを書いたオリジナルのプログラムでファイルを開いて名前を変更することです。

4
std''OrgnlDave

新しいWindows SDKドキュメント(8.0)によると、新しいパス制限が提供されているようです。次のような パス処理関数 とPATHCCH_MAX_CCHの定義の新しいセットがあります。

// max # of characters we support using the "\\?\" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH             0x8000

公式ドキュメントのこの部分 には、NTFS、exFAT、FAT32、および127の場合、255個のUnicode文字が含まれています。 UDFの場合はUnicode、または254個のASCII文字。

それとは別に、パス名の最大長は常に32,760 Unicode文字で、各パス構成要素は255文字以下です。

3
caw

255文字ですが、完全なパスもそれより長くするべきではありません。これについてはウィキペディアにNiceテーブルがあります。 http://en.wikipedia.org/wiki/Filename

2
svinto