267

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

4

14 に答える 14

296

ファイル名の個々のコンポーネント (つまり、パスに沿った各サブディレクトリと最終的なファイル名) は 255 文字に制限されており、パスの合計の長さは約 32,000 文字に制限されています。

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

于 2008-11-05T16:41:17.457 に答える
29

257文字です。正確に言うと、NTFS 自体はファイル名の最大長を数千文字 (約 30,000 文字) に制限しています。ただし、Windows では、パス + ファイル名の最大長は 260 です。ドライブ + フォルダーは少なくとも 3 文字を占めるため、最終的には 257 になります。

于 2008-11-05T16:45:30.817 に答える
28

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

指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は260文字未満、ディレクトリ名は248文字未満である必要があります。

スクリーンショット

于 2013-04-12T12:29:53.290 に答える
14

NTFS の長さは 255 です。NTFS 属性のNameLengthフィールドは、$Filenameオフセットのないバイトです。これにより、0 ~ 255 の範囲が得られます。

ファイル名自体は、異なる「名前空間」にある場合があります。これまでのところ、POSIX、WIN32、DOS、および (WIN32DOS - ファイル名がネイティブに DOS 名である場合) があります。(文字列には長さがあるため、\0 を含めることができますが、これは問題を引き起こし、上記の名前空間にはありません。)

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

于 2010-08-24T13:51:52.610 に答える
14

Windows XP NTFS で 199 を確認しました。

これは理論ではなく、ラップトップで試しただけです。緩和効果はあるかもしれませんが、物理的に大きくすることはできません。

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

于 2008-11-05T16:48:45.023 に答える
13

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

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

于 2008-11-05T16:42:00.840 に答える
8

255文字。

http://en.wikipedia.org/wiki/ファイル名

于 2008-11-05T16:40:47.567 に答える
5

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

明確にするために、人々が 255 ~ 260 文字であると信じている理由は、それが Windows エクスプローラーでサポートされているすべてだからです。それよりも長いファイル名でファイルのコピーなどを行うと、エラーが発生します。ただし、プログラムははるかに長いファイル名を読み書きできます (これは、エクスプローラーが最初に不満を言う長さに到達する方法です)。このような状況でのマイクロソフトの「推奨される修正」は、ファイルを書き込んだ元のプログラムでファイルを開き、名前を変更することです。

于 2012-10-09T14:16:48.767 に答える
3

新しい 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
于 2013-09-11T17:19:51.043 に答える
1

255 文字ですが、完全なパスもそれより長くすべきではありません。ウィキペディアには、これに関する素晴らしい表があります: http://en.wikipedia.org/wiki/Filename

于 2008-11-05T16:44:24.890 に答える
-3

実際には 256です。 File System Functionality Comparison, Limitsを参照してください。

http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.htmlで投稿を繰り返すには

「FAT32ではなくNTFSについて話していると仮定すると、「パス+ファイルの255文字」はエクスプローラーの制限であり、ファイルシステム自体ではありません。NTFSは最大32,000文字のUnicode文字までのパスをサポートし、各コンポーネントは最大255文字です。

エクスプローラーと Windows API では、パスが 260 文字に制限されています。これには、ドライブ文字、コロン、区切りのスラッシュ、および終端のヌル文字が含まれます。\\"で開始すると、Windows でより長いパスを読み取ることができます。

上記の投稿を読めば、確信できる 5 番目のことがわかるはずです。少なくとも 1 人の頑固なコンピューター ユーザーを見つけることです!

于 2009-11-20T17:01:24.730 に答える
-3

238! 次のbatスクリプトを使用して、Win7 32ビットで確認しました。

set "fname="
for /l %%i in (1, 1, 27) do @call :setname
@echo %fname%
for /l %%i in (1, 1, 100) do @call :check
goto :EOF
:setname
set "fname=%fname%_123456789"
goto :EOF
:check
set "fname=%fname:~0,-1%"
@echo xx>%fname%
if not exist %fname% goto :eof
dir /b
pause
goto :EOF
于 2015-05-28T14:08:40.457 に答える