2012-06-28 6 views
-1

내 상황은 간단합니다. 내 프로그램이 있습니다 : 난 그냥 배열로 폴더 "입력"에서 파일의 모든 경로를 넣어 원하는Eclipse에서는 java를 실행할 수 있지만 cmd에서는 실행할 수 없습니다.

File folder = new File("input"); 
File[] listOfFiles = folder.listFiles(); 
System.out.println(listOfFiles.length); 

. 그것은 cmd에서 이렇게하려고하면 eclipse.When와 함께 실행하면 정상적으로 작동하지만 널 포인터 예외가 발생합니다. 내 자바 파일은 다음 디렉토리에 있습니다 :

C : 사용자 \ \ JHeng \ 바탕 화면 \ 자바 물건 \ 컨버터 \의 SRC

응답에 대한

감사합니다!

나는 첫 번째 줄에 절대 디렉토리를 넣을 경우 : 나는 이클립스를 실행하면

File folder = new File("C:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src\\input"); 

가, 심지어 일식 선 나에게 사전에

System.out.println(listOfFiles.length); 

감사 널 포인터 예외를 제공합니다 !

답변

0

분명히 작업 영역의 문제입니다. 이제 아래의 코드를 시도하십시오 .......

하지만 먼저 지정된 경로에 "src"폴더가 있는지 확인하십시오.이 파일은 파일 생성자에서 아래 인수로 전달됩니다.

File folder = new File("c:\\Users\\JHeng\\Desktop\\java stuff\\converter\\src"); 
File[] listOfFiles = folder.listFiles(); 
System.out.println(listOfFiles.length); 
1

두 경우간에 작업 디렉토리가 달라질 수 있습니다.

첫 번째 줄에 만드는 객체는 상대 경로를 사용하므로 일부 위치에서 실행될 때 관련 폴더를 찾을 수 있고 다른 위치에서는 실패 할 수 있습니다. 특히 의지에 listFiles()를 호출 :

반환 null이 추상 패스는 디렉토리를 나타내지 않는 경우, 또는 I/O 오류가 발생하는 경우.

프로그램의 동작이 실행되는 디렉터리에 의존하지 않도록 절대 경로를 지정할 수 있습니까? (이것은 포함 할 수 중 하나 설정 변수 또는 시스템 속성으로 그것을 집어 들고 다른 디렉토리를 하드 코딩, 또는.)

을이 작업을 수행하지 않는 경우, 아마도 프로그램을 는 다르게 동작 따라하기 위해을한다고 디렉토리에서 실행됩니다 (예 : 현재 디렉토리의 모든 파일에 대해 작업을 수행하는 경우). 이것이 의도 된 것이라면, "input"이라는 서브 디렉토리가없는 경우에 대한 에러 처리를 간단하게 할 수 있습니다. folder.isDirectory()이 true인지 확인하고, 그렇지 않으면 적절한 오류 메시지를 출력하십시오.

+0

질문의 업데이트를 참조하십시오. –

관련 문제