JAVA 질문란에도 글을 올립니다.

 

안녕하세요.

좀 답답한 문제가 있어서 글로써 도움을 받기 위해 글을 씁니다.

 

현상:

directory 내의 파일을 리스팅하기 위해서 java.io.File 의 listFiles() API

directory 내의 한글이름 파일이 있으면 listFiles() API 가 어떤 exception 도 없이 그냥 죽어버림.

한글 파일명은

"일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사.txt"

file title이 한글 84자 입니다.

 

한글83자 파일은 정상적으로 리스팅 함. (한글83자 + .txt 확장자 = 253 bytes)

astro 앱으로도 한글84자 파일이 있는 directory를 읽으면 똑같이 죽어버림.

한글85자는 정상적으로 리스팅 됨. (정말 이상함.)

한글86자 부터는 listFiles() API 가 죽지는 않고 해당 파일만 리스팅에서 제외되고 나머지는 리스팅이 됨.

 

참고사항:

안드로이드의 파일시스템에서 filename max length는 255 bytes 입니다.

현재 시스템에서 file.encoding property는 UTF-8 입니다.

 

문의:

왜 java.io.File 의 listFiles() API 가 그냥 죽을 까요?

다른 개발자 분들의 예상되는 원인을 듣고 싶습니다. (이거 굉장히 답답하더군요. java API가 그냥 죽으니깐요.)

 

제 생각:

한글83자 파일은 (한글83자 + .txt 확장자 = 253 bytes) 이기 때문에 정상적으로 리스팅이 됨.

한글84자 파일은 (한글84자 + .txt 확장자 = 256 bytes) 255 bytes를 넘기 때문에 원래대로라면 리스팅에서 제외되고 listFiles() API는 죽으면 안됨.

그러나 256 이라는 숫자가 의심스럽습니다.

인코딩 부분도 의심스러우나 잘 모르겠습니다.


글을 읽어 주셔서 감사합니다.

답변 부탁드립니다. ^^