문제

저는 업로드된 파일의 파일 이름을 보관할 데이터베이스 테이블을 디자인하고 있습니다.Windows XP 또는 Vista에서 사용되는 NTFS의 파일 이름의 최대 길이는 얼마입니까?

도움이 되었습니까?

해결책

파일 이름의 개별 구성 요소 (즉, 경로를 따라 각 하위 디렉토리 및 최종 파일 이름)는 255 자로 제한되며 총 경로 길이는 약 32,000 자로 제한됩니다.

그러나 Windows에서는 초과 할 수 없습니다 MAX_PATH 값 (파일의 경우 259 자, 폴더의 경우 248 자). 보다 http://msdn.microsoft.com/en-us/library/aa365247.aspx 자세한 내용은.

다른 팁

257 자입니다. 정확하게 말하면 : NTFS 자체는 최대 수천 자의 파일 이름 길이 (약 30'000)를 부과합니다. 그러나 Windows는 Path+Filename의 최대 최대 길이를 부과합니다. 드라이브+폴더는 최소 3 자 이상을 차지하므로 257로 끝납니다.

이것이 바로 프레임 워크 4.5에서 "처리되지 않은 예외"가 긴 파일 이름으로 파일을 저장하려고 할 때 다음과 같습니다.

지정된 경로, 파일 이름 또는 둘 다 너무 길다. 자격을 갖춘 파일 이름은보다 적어야합니다 260 문자 및 디렉토리 이름은 248 캐릭터.

screenshot

199 Windows XP NTFS에서 방금 확인했습니다.

이것은 이론이 아니라 내 노트북을 시도하는 것입니다. 완화 효과가있을 수 있지만 물리적으로 더 크게 만들 수는 없습니다.

이것을 제한하는 다른 설정이 있습니까? 직접 시도해보십시오.

에 따르면 MSDN, 260 자입니다. 포함됩니다 "<NUL>" -보이지 않는 종료 널 문자이므로 실제 길이는 259입니다.

그러나 기사를 읽으십시오. 조금 더 복잡합니다.

NTFS의 길이는 255입니다 NameLength NTFS의 필드 $Filename 속성은 오프셋이없는 바이트입니다. 이것은 0-255의 범위를 산출합니다.

파일 이름 iself는 다른 "네임 스페이스"에있을 수 있습니다. 지금까지 Posix, Win32, Dos 및 (Win32dos- 파일 이름이 기본적으로 DOS 이름 일 수있는 경우)가 있습니다. (문자열의 길이가 있으므로 그것은 그것을 가지고 있습니다 ~할 수 있었다 0을 포함하지만 문제는 문제를 일으킬 것이며 위의 네임 스페이스에는 없습니다.)

따라서 파일 또는 디렉토리의 이름은 최대 255 자일 수 있습니다. Windows 아래에서 전체 경로를 지정할 때 경로를 접두사하십시오 \\?\ (또는 UNC 경로를 위해 ? unc server share를 사용) 이 경로를 연장 길이 (~ 32k 문자)로 표시합니다. 경로가 길면 작업 디렉토리를 길을 따라 설정해야합니다 (UGH- 프로세스 전체 설정으로 인한 부작용).

위의 승인 된 답변에 이것을 추가하고 있습니다.

분명히, 사람들이 255-260 자라고 믿는 이유는 Windows 탐색기가 지원하는 전부이기 때문입니다. 파일 이름에서 파일 사본과 같은 작업을 오류가 발생합니다. 그러나 프로그램은 훨씬 더 긴 파일 이름을 읽고 쓸 수 있습니다 (이는 탐색기가 처음에 불평하는 길이에 도달하는 방법입니다). 이와 같은 상황에서 Microsoft의 "권장 수정"은 원래 프로그램에서 파일을 열고 이름을 바꾸는 것입니다.

새로운 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

공식 문서 의이 부분 분명히 말한다 255 개의 유니 코드 문자 NTF의 경우 exfat 및 fat32, 127 개의 유니 코드 또는 UDF의 경우 254 개의 ASCII 문자.

그 외에도 최대 경로 이름 길이는 항상 32,760 개의 유니 코드 문자이며 각 경로 구성 요소는 255 자 이하입니다.

255자. 하지만 전체 경로도 이보다 길어서는 안 됩니다.Wikipedia에는 ​​이에 대한 멋진 표가 있습니다. http://en.wikipedia.org/wiki/파일 이름.

238!다음 박쥐 스크립트로 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

실제로 그것은 256입니다 파일 시스템 기능 비교, 한계.

게시물을 반복합니다 http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html

"우리가 FAT32가 아닌 NTF에 대해 이야기하고 있다고 가정하면"Path+파일의 255 자 "는 파일 시스템 자체가 아니라 탐색기의 제한입니다. NTFS는 최대 32,000 개의 유니 코드 문자의 경로를 지원하며 각 구성 요소는 최대 255 자입니다.

Explorer-와 Windows는 구동 문자, 콜론, 슬래시 분리 및 종료 Null 문자를 포함하여 경로의 260 자로 제한합니다. Windows에서 더 긴 경로를 읽을 수 있습니다. \\"

위의 게시물을 읽으면 5 번째가 있습니다.

WS 2012 Explorer에서 이름+기간+Extnesion이있는 파일을 만들 수 없습니다. 224 캐릭터. 메신저를 쏘지 마세요!

동일한 서버의 CMD에서 235 캐릭터 이름:

시스템이 지정된 경로를 찾을 수 없습니다.

Explorer에서 생성 된 224 자 이름이있는 파일은 Notepad ++에서 열 수 없습니다. 대신 새 파일 만 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top