2012-07-01 2 views
0

텍스트 파일을 읽고 줄을 인쇄하는 클래스를 작성하고 있습니다. BufferedReader rd = new BufferedReader (새로운 FileReader ("file.txt"))를 포함하는 줄에서 오류가 발생했습니다. 말하는 토큰 구문 오류 ";", {이 토큰 다음에 예상. 나는 그것을 메서드 내에서 배치하려고 시도했지만 추천대로 try catch 블록 내에서 시도했지만 rd 변수를 해결할 수 없습니다. 나는 다른 구문의 일부가 다르게 보일 수 있으므로 acm 패키지를 사용하고 있지만 다른 오류는 발생하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.)Java 구문 오류 버퍼링 된 판독기

import acm.program.*; 
import acm.util.*; 
import java.io.*; 
import java.util.*; 

public class FileReading extends ConsoleProgram { 

BufferedReader rd = new BufferedReader(new FileReader("file.txt")); 

try { 
    while (true) {   
     String line = rd.readLine(); 
     if (line == null) { 
      break; 
     } 
     println(line); 
    } 
    rd.close(); 
} 
catch (IOException ex) { 
    throw new ErrorException(ex); 
    } 
} 
} 
+3

당신은 방법 안에 그 코드를 삽입해야합니다! .. – SuperSaiyan

+0

@Jarod :'rd' 정적 변수를 만들면 가능하지만'rd'가 생성 된 모든 'FileReading' 객체에 대해 별도의'Reader'라고 가정하면 디자인에 위배 될 수 있습니다. – nhahtdh

답변

3

코드 블록은 메소드 또는 정적 절 내부에 구현해야합니다. 같은 :

다른 응답으로
public class FileReading extends ConsoleProgram { 

    public void readFile(){ 
    BufferedReader rd = null; 
    try { 
     rd = new BufferedReader(new FileReader("file.txt")); 
     while (true) {   
      String line = rd.readLine(); 
      if (line == null) { 
       break; 
      } 
      println(line); 
     } 
    }catch (IOException ex) { 
     throw new ErrorException(ex); 
    }finally{ 
     try{ 
     rd.close(); 
     }catch (IOException ex) { 
     throw new ErrorException(ex); 
     } 
    } 
    } 
} 
+0

나는 이것을 이전에 시도했지만 아직 처리 할 때이 오류가 발생합니다. 처리되지 않은 예외 유형 FileNotFoundException throws 선언 또는 try/catch와 함께 추가 할 것을 권장하는 새 FileReader ("file.txt") 관련 정보. try/catch는 아래에 정의되지 않은 rd를 남겨두고 다음을 추가합니다. public void readFile() throws FileNotFoundException {실행하지만 빈 출력을 생성합니다. 파일이 올바르게 명명 된 프로젝트 폴더에 있고 표시 할 텍스트가 있는지 확인했습니다. – Jarod

+0

응용 프로그램에서 파일을 찾을 수없는 것 같습니다. 파일의 전체 경로를 제공하려고 시도 했습니까? – GETah

+0

그리고 개선 된 대답에 대한 편집을 참조하십시오. (시도 범례 범위 오류에 관해서) – GETah

1

, 당신은 클래스의 일반적인 부분에 코드를 제공하지 못할, 그것은 방법 또는 정적 블록 내이어야한다.

코드 블록을 생성자에 넣음으로써 문제가 해결되었습니다. 아래 예를 참조하십시오.

import acm.program.*; 
import acm.util.*; 
import java.io.*; 
import java.util.*; 

public class FileReading extends ConsoleProgram { 
public FileReading() 
{ 
BufferedReader rd = new BufferedReader(new FileReader("file.txt")); 

try { 
    while (true) {   
     String line = rd.readLine(); 
     if (line == null) { 
      break; 
     } 
     println(line); 
    } 
    rd.close(); 
} 
catch (IOException ex) { 
    throw new ErrorException(ex); 
    } 
} 
} 
} 
0

하는 방법을 만들기 ... 그 내부의 클래스에 있지 직접 ... 이렇게

예 :

public void go() 
{ 

    BufferedReader rd = new BufferedReader(new FileReader("file.txt")); 

try { 
    while (true) {   
     String line = rd.readLine(); 
     if (line == null) { 
      break; 
     } 
     println(line); 
    } 
    rd.close(); 
} 
catch (IOException ex) { 
    throw new ErrorException(ex); 
    } 
} 

} 
관련 문제