2012-12-04 1 views
1

"KFormLList.txt"라는 Java 파일을 읽으려고합니다. 이 프로그램과 함께 기본 패키지에 저장되지만 실행하려고하면 "오류 : KFormLList.txt (시스템에서 지정된 파일을 찾을 수 없습니다)"FileInputStream 오류 Java

무엇이 잘못 되었나요? ? 어떤 도움을 주셔서 감사합니다.

import java.io.*; 

public class VLOCGenerater { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    try { 
     //Read the text file "KFormLList.txt" 
     FileInputStream fis = new FileInputStream("KFormLList.txt"); 

     DataInputStream dis = new DataInputStream(fis); 
     BufferedReader br = new BufferedReader(new InputStreamReader(dis)); 
     String strLine; 
     int V = 0; 
     int LOC = 0; 

     while((strLine = br.readLine())!= null){ 
      if (strLine.trim().length() != 0){ 
       System.out.println(strLine); 
       V++; 
       } 
      else { 
       LOC++; 
      } 
     } 
     System.out.println("V = " + V); 
     System.out.println("LOC = " + LOC); 
     dis.close(); 
    } 
    catch (Exception e){ 
    System.err.println("Error: " + e.getMessage()); 
    } 

} 

} 
+0

텍스트 파일은 프로그램을 실행중인 폴더와 같은 폴더에 있습니까? –

+0

예. 텍스트 파일 (KFormLList.txt)은 프로그램 (VLOCGenerater.java)과 동일한 폴더 (src)에 있습니다. – Brett

답변

5

프로젝트의 루트 디렉토리에 텍스트 파일을 넣어보십시오.

FileInputStream 생성자로 전달 된 name 매개 변수는 파일 시스템의 파일 경로 이름입니다.

A pathname, whether abstract or in string form, may be either absolute or relative. An absolute pathname is complete in that no other information is required in order to locate the file that it denotes. A relative pathname, in contrast, must be interpreted in terms of information taken from some other pathname. By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.

나는 이클립스 프로젝트의 당신의 루트에 user.dir를 설정합니다 기본적으로 이클립스를 사용하고 가정한다. 다른 자료를 읽은 Netbeans도 동일한 규칙을 따릅니다. 그것이 FileInputStream 찾을 수 있습니다

System.out.println(System.getProperty("user.dir")); 

디렉토리의 루트에 파일을 배치 :

은해야 출력 프로젝트의 경로를, 다음 코드를 사용하여 테스트 할 수 있습니다.

0

이렇게하면 프로그램은 작업 폴더에있는 파일을 예상합니다. 즉 자바를 실행하는 곳. 클래스 패스 (기본 패키지)에서로드하려면 getResourceAsStream을 시도하십시오.

1

당신이 당신의 파일 NetbeansProjects에 있는지 확인하십시오 (이클립스 아마도 유사) 넷빈즈를 사용하는 경우/프로젝트 _/

당신이 파일을 .JAR 같은 장소 위치로 TXT를 넣어 프로그램을 컴파일 한 경우

.jar가 있습니다.

1

파일을 프로젝트의 "루트 디렉토리"에 넣거나 FileInputStream에 대한 인수로 파일의 "절대 경로"를 제공하십시오.

희망이 있습니다. :).