Windows가 처리 할 수있는 가장 긴 파일 경로는 무엇입니까?


57

Windows가 처리 할 수있는 가장 긴 파일 경로는 무엇입니까?

답변:


48

최대 경로 길이 (MSDN에서)

Windows API에서 (다음 단락에서 설명하는 일부 예외) 경로의 최대 길이는 MAX_PATH이며 260 자로 정의됩니다 . 로컬 경로는 드라이브 문자, 콜론, 백 슬래시, 백 슬래시로 분리 된 구성 요소 및 종료 널 문자의 순서로 구성됩니다. 예를 들어, 드라이브 D의 최대 경로는 "D : \ <일부 256 자 경로 문자열> <NUL>"입니다. 여기서 "<NUL>"은 현재 시스템 코드 페이지의 보이지 않는 종료 널 문자를 나타냅니다. (<> 문자는 시각적 선명도를 위해 사용되며 유효한 경로 문자열의 일부가 될 수 없습니다.)


4
접두사에`\\?`를 붙여서이 제한을 초과하는 경로를 처리 할 수 ​​있다고 언급해야합니다 (문자 시퀀스라고 생각합니다).
Joey

3
또한 두 번째 단락에서 언급 한 유니 코드 경로의 한계를 언급해야합니다. ~ 32k
akira

260? drive : \ 및 종료자를 무시하고 256 자. 2009 년에 왜 한 바이트의 문자 만 가지고 놀아야합니까?
Phoshi

@Phoshi 더 긴 경로를 사용하는 API는 기본적으로 OS에서 사용하지 않습니다. 경로가 260자를 넘을 수 없으며 고정 길이를 할당하기로 결정한 개발자가 작성하지 않은 응용 프로그램에 임의로 긴 문자열을 전달하기 때문입니다. 배열을 유지하면 많은 수의 버퍼 오버플로가 발생하여 응용 프로그램이 충돌하거나 악용 될 수 있습니다. 경로 유효성 검사가 너무 긴 오류를보고했기 때문에 동일한 잘못된 지식을 가진 개발자가 약간 더 나은 구현을 중단 할 수 있습니다.
Dan Neely

15

XP 파일 경로-250 자

Vista 파일 경로-260 자

Windows XP를 새로 설치할 때 가장 긴 경로는 152 자입니다.

Windows Vista를 완전 새로 설치 한 경우 가장 긴 경로는 195 자입니다.

Windows XP에서는 최대 255 자의 파일 이름을 허용합니다

Windows Vista에서는 최대 260자를 포함하는 더 긴 파일 이름을 허용합니다.

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


5
제한을 조금 확장하는 유니 코드 -api를 사용하지 않는 경우에도 마찬가지입니다 (~ 32k, msdn.microsoft.com/en-us/library/… 참조 )
akira

1
흠. 그 속도에서 Win7의 제한은 약 265 자 여야합니다.
quck quixote

왜 한도를 10 자로 늘립니까? 가치가없는 것 같아요 : \
Phoshi

이것은 올바르지 않습니다. 즉, NTFS 제한 이후 최대 파일 이름 길이는 여전히 모든 Windows에서 255 자입니다
phuclv

8

MAX_PATH다른 답변에서 알 수 있듯이 Windows 상수 는 260이지만 실제 가장 긴 경로는 32767입니다.

여기를 참조 하십시오 .

32k는 UNICODE를 사용하는 동안 사용하지만 이제는 최대 경로 길이를 사용해야합니다.

또한 최대 경로 길이에 대해 더 자세히 설명하는 SO에서 내 대답을 살펴볼 수 있습니다 .


1

"고전적인" 제한은 260 자 : drive letter+ :\+ 255 characters of filename+ \(또는 반올림) + null terminator등 다른 답변에서 말했다

그러나 실제 내부 제한은 32767 자이며 완전한 경로\\?\ 를 얻기 위해 추가 하면 얻을 수 있습니다.

Windows API에는 최대 총 경로 길이 32,767 자에 대한 확장 길이 경로를 허용하는 유니 코드 버전이있는 많은 기능이 있습니다. 이 유형의 경로는 백 슬래시로 구분 된 구성 요소로 구성되며, 각 함수 의 lpMaximumComponentLength매개 변수에 리턴 된 GetVolumeInformation값까지이 값이 사용됩니다 (이 값은 일반적으로 255 자임). 확장 길이 경로를 지정하려면 "\\?\"접 두부를 사용하십시오 . 예를 들면 다음과 같습니다 "\\?\D:\very long path".

때문에 정규화 된 경로는 다음 깊은 디렉토리가 함께 드라이브 문자로 마운트하여 액세스 할 수 있습니다 사용할 수없는 몇 가지 이유에 만약 subst/ diskpart또는 만들어 접합 / 심볼릭 링크 경로를 단축

Windows 10부터 MAX_PATH기본적으로는 아니지만 한계도 제거되었습니다.

Windows 10 버전 1607 MAX_PATH부터 일반적인 Win32 파일 및 디렉토리 기능에서 제한이 제거되었습니다. 그러나 새 동작을 선택해야합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.