유닉스 시스템에 마운트 된 윈도우 폴더에 파일을 쓰려고 할 때 게시물의 제목 오류가 발생합니다. 저는 Linux OS에서 Tomcat 6 내부에서 실행되는 웹 서비스를 개발했으며 Windows 네트워크 폴더에 작성해야합니다. 시스템 관리자는이를 Linux 서버에 마운트했으며 파일을 작성하고 수정할 수 있습니다. 나는 다음과 같은 예외가 얻을 게시 된 코드를 실행하려고 할 때 :java.io.IOException : 네트워크 폴더에 대한 사용 권한이 거부되었습니다.
권한이 거부 때 java.io.IOException : 권한이 java.io.File의에서 java.io.UnixFileSystem.createFileExclusively (기본 방법) 에서 거부를 .createNewFile (File.java:850)
이상한 점은 네트워크 폴더의 File.createNewFile 메소드와 관련이있는 것 같습니다. 실제로 서비스는 로컬 파일 시스템에 디버그와 함께 둘 다 쓸 수 있습니다 (PC를 서비스를 개발하는 데 사용) 및 tomcat 폴더 시스템 관리자는 리눅스 서버에 나를 제공했습니다. 파일은 작성되었지만 비어 있으며 create 메소드 다음의 로그 항목은 인쇄되지 않습니다. 게다가 내가 파일을 만들고 쓰는 데 평범한 outputstream을 사용하면 문제가 없다.
웹에서 예외에 대한 설명을 찾을 수 없습니다. Java에 대해서는 경험이 많지 않으므로 왜이 오류가 발생하는지 이해하고 싶습니다. 나는 그것을 잘못된 방식으로 사용하고 있습니까? 그것은 도서관의 버그입니까? 일부 매개 변수를 전달하지 않으시겠습니까? 명시된 바와 같이, 나는 일반 출력 스트림을 사용하여이 문제를 해결했다. 이것은 자바에 대한 나의 이해를 높이기위한 질문이다.
FileOutputStream fos = null;
try{
log.info(String.format("file length: %s",streamAttach.length));
log.info(String.format("check File : %s",filename));
File f = new File(filename);
if(f.exists())
...
boolean done= f.createNewFile();//here comes the exception
//nothing of the following happens
if(!done)
throw new NWSException("error creating file");
log.info(String.format("file %s creato", nomeFile));
는 대답
은 리눅스에서 권한 문제와 비슷하게 들린다. chmod 해봤습니까? – dimitrisli
시스템 관리자는 권한이 정상이라고 말하면서, 마운트 된 폴더에 파일을 만들고 vi로 수정할 수 있습니다. 내가 이해할 수없는 이유는 Fileoutputstream이 작동하는 동안 File 클래스 메서드가 실패하고 마운트 된 하나에서 실패 할 때 "locals folder"에서 작동하는 이유입니다. –