Programing

NTFS의 최대 파일 이름 길이 (Windows XP 및 Windows Vista)?

lottogame 2020. 4. 6. 07:56
반응형

NTFS의 최대 파일 이름 길이 (Windows XP 및 Windows Vista)?


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


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

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


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

지정된 경로, 파일 이름 또는 둘 모두가 너무 깁니다. 완전한 파일 이름은 260미만이어야 하고 디렉토리 이름은 248미만이어야 합니다.

스크린 샷


257 자입니다. 정확히 말하면, NTFS 자체는 최대 파일 이름 길이 (수 천자 (약 30'000 개))를 부과합니다. 그러나 Windows는 Path + Filename에 260 최대 길이를 부과합니다. drive + folder는 3 자 이상을 차지하므로 257로 끝납니다.


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

이것은 이론이 아니라 단지 랩톱에서 시도하는 것입니다. 완화 효과가있을 수는 있지만 물리적으로 크게 만들 수는 없습니다.

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


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

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


NTFS의 길이는 255입니다. NameLengthNTFS $Filename속성 필드는 오프셋이없는 바이트입니다. 이 범위는 0-255입니다.

파일 이름 iself는 다른 "네임 스페이스"에있을 수 있습니다. 지금까지 POSIX, WIN32, DOS 및 (WIN32DOS-파일 이름이 기본적으로 DOS 이름 일 수있는 경우)이 있습니다. (문자열은 길이 있으므로 \ 0을 포함 있지만 문제가 발생하고 위의 네임 스페이스에 없습니다.)

따라서 파일 또는 디렉토리 이름은 최대 255 자입니다. Windows에서 전체 경로를 지정할 때 경로를 \\? \접두사 로 지정 하거나 UNC 경로에 \\? \ UNC \ server \ share를 사용 하여이 경로를 확장 길이 (~ 32k 자)로 표시해야합니다. . 경로가 더 길면 작업 디렉토리를 길을 따라 설정해야합니다 (프로세스 전체 설정으로 인한 부작용).


255 자

http://en.wikipedia.org/wiki/ 파일 이름


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

명확하게 말하면 사람들이 255-260 자라고 생각하는 이유는 이것이 Windows 탐색기가 지원하는 전부이기 때문입니다. 파일 이름보다 긴 파일 복사와 같은 작업을 수행하면 오류가 발생합니다. 그러나 프로그램은 훨씬 더 긴 파일 이름을 읽고 쓸 수 있습니다 (이것은 Explorer가 처음에 불평하는 길이에 도달하는 방법입니다). 이와 같은 상황에서 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

공식 문서 의이 부분은 NTFS, exFAT 및 FAT32 의 경우 255 유니 코드 문자 , UDF의 경우 127 유니 코드 또는 254 ASCII 문자 임을 분명히 밝힙니다 .

그 외에도 최대 경로 이름 길이는 항상 32,760 유니 코드 문자이며 각 경로 구성 요소는 255자를 넘지 않습니다.


전체 경로는 이보다 길지 않아야 255 자입니다. Wikipedia에는 http://en.wikipedia.org/wiki/Filename과 같은 멋진 테이블이 있습니다.


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

실제로는 256입니다. 파일 시스템 기능 비교, 한계를 참조하십시오 .

http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html에 게시물을 반복하려면

"FAT32가 아닌 NTFS에 대해 이야기 할 때"경로 + 파일의 경우 255 자 "는 파일 시스템 자체가 아니라 탐색기의 제한 사항입니다. NTFS는 각 구성 요소가 최대 255자인 최대 32,000 개의 유니 코드 문자를 지원합니다.

Explorer 및 Windows API는 경로에 대해 드라이브 문자, 콜론, 슬래시 분리 및 종료 널 문자를 포함하여 260 자로 제한합니다. \\"로 시작하면 Windows에서 더 긴 경로를 읽을 수 있습니다.

위의 게시물을 읽으면 다섯 번째 확신 할 수있는 것을 볼 수 있습니다. 적어도 한 명의 컴퓨터 사용자를 찾는 것!


WS 2012 Explorer에서 이름이 224 자를 초과하는 이름 + 마침표 + 확장명을 가진 파일을 만들 수 없습니다 . 메신저를 쏘지 마라!

동일한 서버의 CMD에서 235 자를 초과하는 문자 이름을 만들 수 없습니다 .

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

탐색기에서 만든 224 자의 이름을 가진 파일은 Notepad ++에서 열 수 없습니다. 대신 새 파일이 나타납니다.

참고 URL : https://stackoverflow.com/questions/265769/maximum-filename-length-in-ntfs-windows-xp-and-windows-vista

반응형