일반적으로 Java가 "매개 변수가 올바르지 않음"을 반환 할 때의 의미는 무엇을 의미합니까?

StackOverflow https://stackoverflow.com/questions/1208566

  •  05-07-2019
  •  | 
  •  

문제

나는 그렇게 같은 파일을 만들고 있습니다

try {
    File file = new File(workingDir, obj.getName() + ".xls");
    outputStream = new FileOutputStream(file);
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

그리고 나는 받고있다

java.io.FileNotFoundException: ..\a\relative\path\obj_name.xls (The parameter is incorrect)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)

"매개 변수는 틀 렸습니다"는 무엇을 의미합니까? 내가 검증 한 경로 이름이 존재합니다. 파일 이름 만 만들어야하지 않습니까? 이것은 Windows 시스템에 있습니다. 코드는 UNIX 기반 시스템 에서이 오류없이 작동합니다.


업데이트

파일이 출력 스트림이 작성하려는 것을 확인했습니다. 또한 파일이 쓸 수 있음을 확인했습니다. 많은 소란을 겪은 후, 나는 실제 경로를 제거하고 파일 이름 (원치 않는)으로 전달했습니다. 따라서 문제는 길과 관련이 있습니다. 길에서 캐릭터를 탈출해야합니까?

도움이 되었습니까?

해결책

이것은 A처럼 보입니다 보고 된 버그 Windows 머신에서.

정상적인 상황에서는 결장이있는 경로와 같은 경로 (:) 드라이브 문자를 참조하지 않는 것이이 메시지를 일으킬 것입니다.

다른 팁

사용중인 경로에 문제가있는 것 같습니다. 파일을 열기 전에 파일을 사용하여 경로에서 무슨 일이 일어나고 있는지 디버깅하기 위해 사용해보십시오.

File file = new File(workingDir, obj.getName() + ".xls");
System.out.println("Path="+file.getPath());
outputStream = new FileOutputStream(file);

"WorkingDir"가 상대적인 경로 인 경우 앱을 UNIX에서 Windows로 옮길 때 올바른 "현재 디렉토리"에 있다고 확신합니까? 어쩌면 실행중인 응용 프로그램의 현재 디렉토리가 무엇인지 확인해야 할 수도 있습니다.

아마도 응용 프로그램이 파일에 쓸 수있는 올바른 액세스 권한이 없습니까? 읽기 전용이거나 다른 방법으로 보호됩니까?

FileOutputStream.open() 기본 메소드이며, "매개 변수가 잘못된"과 같은 예외 메시지가 기본 OS에서 나오는 것으로 가정합니다.

BTW : 그만큼 File 생성자는 호출하지 않습니다 FileOutputStream.open(), 여기에 게시 한 코드에서 예외가 나오지 않습니까?

어쩌면 그것은 길의 백 슬래시 때문일까요? 너무 길어? 이 오류에 대해 유효하지 않은 파일 이름 (특별 카라스터 ...)?

나는 완전히 잘못되었을 수도 있지만 OS 종속 오류처럼 들리므로 시도 할 가치가 있습니다.

JVM 프로세스를 실행하는 사용자가 해당 파일에 액세스 할 수있는 올바른 권한이 있는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top