2017-05-24 2 views
-2

java를 사용하여 파일을 저장/생성하는 중 문제가 발생했습니다.java.io.IOException : 해당 파일 또는 디렉토리가 없습니다.

java.io.IOException: No such file or directory 
at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.7.0_79] 

내 환경은 Linux이지만 Windows를 탑재하고 있습니다 (파일을 저장하려고하는 장소). 중국어 문자가있는 파일 이름을 만들려고 할 때마다 충돌합니다.

Linux와 Windows 간의 인코딩 차이로 인해 이러한 현상이 발생할 수 있습니까?

비슷한 OS (Linux의 앱 실행, Windows의 경우 동일한 작업)에 저장하여 실행하면 원활하게 실행됩니다.

도움이 매우 감사합니다.

내가 파일을

 File imgPath = new File(fullpath.toString()); 

     if (!imgPath.exists()){     
      FileUtils.forceMkdir(imgPath); 
      imgPath.setWritable(true, false); 
     } 

     fullpath.append(File.separator).append(fileName); 

     outputStream = new FileOutputStream(new File(fullpath.toString())); 

감사를 많이 만드는 데 사용되는 코드입니다.

+1

오타가 아니라 크로스 플랫폼 문제입니다. 나는 위에 언급했다. 나는 Windows에서 그것을 저장하려고하는 동안 리눅스에서 내 애플 리케이션을 실행 마운트. 경로를 확인했습니다, 허락. 파일 이름에 중국어 문자가 없으면 제대로 작동합니다. –

+0

어떤 사람이 내 질문에 대해서도 의견을 말하지 않고도 잘 모르겠다. 당신은 단지 내 질문을 이해하지 못하거나 대답 할 수 없다. –

답변

1

참고 : 저는 꽤 새로운 사용자이며 아직까지 직접적인 질문을 올릴 수 없습니다 (지금까지의 질문과 답변에만 해당). 답변으로 게시하고 있습니다.

Windows는 UTF-8을 사용하는 반면 Windows는 UTF-16을 사용합니다. (아직 아무것도 변경하지 않고 추가로 설치하지 않은 경우) UTF-8 및 UTF-16은 동일한 문자 범위를 지원합니다. 그러나 올바르게 기억하고 있습니다 (UTF-8은 8 비트에서 시작하고 UTF-16은 16에서 시작합니다). 비용을 불문하고 저장/읽기가 약간 다릅니다. InputStreamReader는 지정된 인코딩의 외부 표현에서 내부 표현으로 문자를 변환합니다. 바이트 단위로 행해진 정확한 방법에 대해이 stackoverflow 게시물 (Difference between UTF-8 and UTF-16?)에 언급되어 있습니다. 기본 사항은 동일하지만 한자와 같이 다른 항목과 다릅니다. 그 선을 따라 해결책을 찾는 것을 제안 할 것입니다 (저는 수업을해야합니다!). 나는 완전히 틀릴 수도 있지만 이것은 아마도 좋은 출발점 일 것입니다. 행운을 빕니다.

+0

응답이 늦어서 죄송합니다. 그게 U처럼 말했지 만 UTF-16에서도 간소화 된 중국어와 전통 중국어가 있습니다. 파일을 성공적으로 저장했지만 파일 이름이 완전히 다른 이유는 실제 파일 이름이 단순화 된 버전을 사용하기 때문입니다. –

관련 문제