창 256 자 경로 이름 제한


17

오랜 연구 끝에 마침내 최신 Microsoft Windows 7에서도 경로 이름이 256자를 초과 할 수 없다는 사실을 알았습니다. NTFS가 최대 32,000 자 경로를 처리 할 수 ​​있기 때문에 어리석은 제한이있는 이유를 알 수 없습니다 십여 년 동안 아무런 문제없이 길이! 그것을 바꿀 가능성이 없습니까? 아니면 그것을 피할 수있는 실용적인 해결책이 있습니까?

긴 파일 이름을 가진 일부 중첩 된 사진 디렉토리와 같은 간단한 사용 사례의 경우에도 260자가 적습니다.


1
걱정해야 할 점은 경로가 얼마나 길어야하는 지에 대한 하드 코딩 된 아이디어를 가진 구형 프로그램이 있기 때문에 더 긴 경로에서 사용하려고하면 흥미로운 방식으로 폭발 할 것입니다.
dsolimano

Linux OS에이 문제가 있습니까?
ahorn

답변:


18

Microsoft에 따르면 :

  • 기존 Windows API는 최신 버전 용으로 개발 된 응용 프로그램의 경우에도 경로 이름을 260 자로 제한합니다.

  • 유니 코드 인식 API를 사용하는 응용 프로그램은 최대 32767자를 허용하는 경로 형식을 사용할 수 있습니다. 파일 이름 앞에 접두사를 붙여야 \\?\하며 절대 경로 여야합니다 (예 : \\?\c:\dir\file또는) \\?\UNC\server\share\file. 추가 제한 사항이 있습니다. 자세한 내용은 참조를 참조하십시오.

심층 파일 계층 구조를 생성 및 사용하고 파일 이름 길이로 인해 폭발하는 응용 프로그램을 사용해야하는 경우 시도 할 수있는 몇 가지 사항이 있습니다.

  • 사용 mklinkcreate 명령을 심볼릭 링크를 하고 응용 프로그램을 사용하는 경로를 전달합니다.

  • subst명령을 사용하여 디렉토리에 드라이브 문자를 지정 하십시오 .

  • 깊은 디렉토리에서 응용 프로그램을 시작하고 짧은 상대 경로를 전달하십시오.

  • 자신의 8.3 별칭 (에 의해 일부 긴 이름을 바꾸기 micros~1당신이 경우 사람들은 여전히 윈도우 7에 존재하는 가정) micros~1과 함께 micros~2, 나는 어느 것이 어느 이야기하는 방법을 모른다; 아마도 DOS를 실행할 수도 있습니다 command.com(Windows 7에서도 여전히 가능하다고 가정).


3
글쎄, Win7의 Windows 탐색기조차도 전통적인 API를 사용하는 것 같습니다! 그 유감.

3
더 많은 백 슬래시`\\? \`:-)
Ring Ø

@Gilles, micros ~ 1 및 micros ~ 2는 시스템 전체에서 표준화되어 있습니까, 아니면 무작위입니까?
Pacerier

@Pacerier 어느 디렉토리가 먼저 생성 되었든간에 gets는 micros~1기본적으로 무작위입니다.
Gilles 'SO- 악의를 멈추십시오'

0

모든 폴더와 파일에 짧은 (8.3) 이름을 사용할 수 있습니다.

그래도 활성화되어 있는지 확인해야합니다.

긴 파일 이름은 짧은 MS-DOS (8.3이라고도 함) 스타일 명명 규칙을 초과하는 파일 이름으로 간주됩니다. 일반적으로 Windows는 긴 파일 이름을 디스크에 특수 디렉토리 항목으로 저장 하며, 특정 파일 시스템에 따라 성능상의 이유로 시스템 전체에서 비활성화 할 수 있습니다 . 긴 파일 이름을 만들면 Windows에서 8.3 별칭이라는 짧은 8.3 형식의 이름을 만들어 디스크에 저장할 수도 있습니다. 이 8.3 앨리어싱은 지정된 볼륨에 대해 비활성화 할 수 있습니다.

(나의 대담한)

또한 긴 이름에서 짧은 이름을 얻으려면 코드를 작성해야합니다.

출처


2
lol ... 우리가 256 자 길이의 파일 이름을 가진이 슈퍼 듀퍼 FAT32를 받았을 때 Windows 95에서 요즘을 잘 기억합니다! 즉 (이 일에) 환상적인 있었고, 난 정말 파일 이름 제한이 여전히 문제가 될 수 있음을 충격하고있어 이러한 일. 2010 년! 윈도우는 정말 구식입니다 ...

0

NTFS의 파일 / 디렉토리 이름은 길이가 바이트로 저장되므로 255 개의 유니 코드 코드 포인트로 제한됩니다. 그러나 전체 경로 길이에는 고유 한 제한이 없습니다.

탐색기 쉘을 포함한 많은 Win32 API 호출의 길이 제한은 260-1입니다. 일부 다른 호출은 \\? \ 접두사를 사용하여 최대 32K를 얻을 수 있습니다 (볼륨 이름이 커널 랜드에서 대체되기 때문에 조금 적음)

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