2008. 10. 8. 15:15

자바로 텍스트 파일 읽기 예제

하드에 있는 텍스트 파일을, 명령행 옵션으로 지정해 주면, 그 파일을 한 줄씩 읽어서 화면에 출력하는 자바 프로그램입니다.

if (args.length == 0) 라는 부분은 읽을 파일명을 지정해 주지 않았을 때 에러 메시지를 출력하는 코드입니다.


자바로 텍스트 파일 읽기 예제 소스

소스 파일명: Foo.java
import java.io.*;

public class Foo {
  public static void main(String args[]) {

    if (args.length == 0) {                   // args.length 는 옵션 개수
      System.err.println("Input Filename...");
      System.exit(1);                         // 읽을 파일명을 주지 않았을 때는 종료
    }

    try {
      ////////////////////////////////////////////////////////////////
      BufferedReader in = new BufferedReader(new FileReader(args[0]));
      String s;

      while ((s = in.readLine()) != null) {
        System.out.println(s);
      }
      in.close();
      ////////////////////////////////////////////////////////////////
    } catch (IOException e) {
        System.err.println(e); // 에러가 있다면 메시지 출력
        System.exit(1);
    }

  }
}
위의 소스에서 빗금 쳐진 구역이, 파일을 읽는 핵심부입니다.

FileReader 는 현재 시스템의 기본 인코딩으로 파일을 읽는데, BufferedReader 로 감싸 주어야 합니다.

readLine() 은 파일을 한 줄씩 읽지만 줄바꿈 문자는 읽지 않습니다. 그래서 println()이 아닌 print(s)로 출력하면 모든 줄이 하나로 붙어서 나옵니다.


0.txt 라는 테스트용 텍스트 파일에, 이육사 시인의 '청포도'라는 시가 적혀 있다고 가정합니다.

javac Foo.java
이렇게 컴파일 한 후

java Foo 0.txt
이렇게 실행시킵니다.


실행 결과:
D:\Z>javac Foo.java

D:\Z>java Foo 0.txt

          청포도


                          이육사


내 고장 칠월은
청포도가 익어 가는 시절

이 마을 전설이 주저리주저리 열리고
먼 데 하늘이 꿈꾸며 알알이 들여와 박혀

하늘 밑 푸른 바다가 가슴을 열고
흰 돛단배가 곱게 밀려서 오면,

내가 바라는 손님은 고달픈 몸으로
靑袍를 입고 찾아온다고 했으니

내 그를 맞아, 이 포도를 따먹으면
두 손은 함뿍 적셔도 좋으련

아이야, 우리 식탁엔 은쟁반에
하이얀 모시 수건을 마련해 두렴


D:\Z>