오랜 연구 끝에 마침내 최신 Microsoft Windows 7에서도 경로 이름이 256자를 초과 할 수 없다는 사실을 알았습니다. NTFS가 최대 32,000 자 경로를 처리 할 수 있기 때문에 어리석은 제한이있는 이유를 알 수 없습니다 십여 년 동안 아무런 문제없이 길이! 그것을 바꿀 가능성이 없습니까? 아니면 그것을 피할 수있는 실용적인 해결책이 있습니까?
긴 파일 이름을 가진 일부 중첩 된 사진 디렉토리와 같은 간단한 사용 사례의 경우에도 260자가 적습니다.
답변
-
기존 Windows API는 최신 버전 용으로 개발 된 응용 프로그램의 경우에도 경로 이름을 260 자로 제한합니다.
-
유니 코드 인식 API를 사용하는 응용 프로그램은 최대 32767자를 허용하는 경로 형식을 사용할 수 있습니다. 파일 이름 앞에 접두사를 붙여야
\\?\
하며 절대 경로 여야합니다 (예 :\\?\c:\dir\file
또는)\\?\UNC\server\share\file
. 추가 제한 사항이 있습니다. 자세한 내용은 참조를 참조하십시오.
심층 파일 계층 구조를 생성 및 사용하고 파일 이름 길이로 인해 폭발하는 응용 프로그램을 사용해야하는 경우 시도 할 수있는 몇 가지 사항이 있습니다.
-
subst
명령을 사용하여 디렉토리에 드라이브 문자를 지정 하십시오 . -
깊은 디렉토리에서 응용 프로그램을 시작하고 짧은 상대 경로를 전달하십시오.
-
자신의 8.3 별칭 (에 의해 일부 긴 이름을 바꾸기
micros~1
당신이 경우 사람들은 여전히 윈도우 7에 존재하는 가정)micros~1
과 함께micros~2
, 나는 어느 것이 어느 이야기하는 방법을 모른다; 아마도 DOS를 실행할 수도 있습니다command.com
(Windows 7에서도 여전히 가능하다고 가정).
답변
모든 폴더와 파일에 짧은 (8.3) 이름을 사용할 수 있습니다.
그래도 활성화되어 있는지 확인해야합니다.
긴 파일 이름은 짧은 MS-DOS (8.3이라고도 함) 스타일 명명 규칙을 초과하는 파일 이름으로 간주됩니다. 일반적으로 Windows는 긴 파일 이름을 디스크에 특수 디렉토리 항목으로 저장 하며, 특정 파일 시스템에 따라 성능상의 이유로 시스템 전체에서 비활성화 할 수 있습니다 . 긴 파일 이름을 만들면 Windows에서 8.3 별칭이라는 짧은 8.3 형식의 이름을 만들어 디스크에 저장할 수도 있습니다. 이 8.3 앨리어싱은 지정된 볼륨에 대해 비활성화 할 수 있습니다.
(나의 대담한)
또한 긴 이름에서 짧은 이름을 얻으려면 코드를 작성해야합니다.
답변
NTFS의 파일 / 디렉토리 이름은 길이가 바이트로 저장되므로 255 개의 유니 코드 코드 포인트로 제한됩니다. 그러나 전체 경로 길이에는 고유 한 제한이 없습니다.
탐색기 쉘을 포함한 많은 Win32 API 호출의 길이 제한은 260-1입니다. 일부 다른 호출은 \\? \ 접두사를 사용하여 최대 32K를 얻을 수 있습니다 (볼륨 이름이 커널 랜드에서 대체되기 때문에 조금 적음)