자바파일읽기 (1)

안녕하세요, 케이치입니다.


이번 포스팅에서는 자바로 텍스트 파일의 내용을 읽어서 출력해보는 소스를 보여드리겠습니다.


우선 CLI 환경이든 다른 IDE 툴 환경이든 Java 프로그래밍을 실행하려면 메인 함수가 필요하죠.


그래서 클래스 파일을 만들면 public void main(String[] args) {} 함수를 생성해서 쓰죠.


이때  main메서드의 인자로 받는 저 String[] args 가 파일명을 입력받기 위한 통로입니다.


커맨드 라인 명령으로 java myapp a.txt  라고 입력을 해서 실행하면 저 args에 a.txt라는 스트링 값이 들어가게 됩니다.


즉, 파일명을 입력받게 되는 것이죠.


파일명을 입력받았으면, 우리는 그 파일을 열어서 안에 있는 내용을 출력하기만 하면 되는 겁니다.


그렇다고 무작정 파일을 열 수는 없을 겁니다. 만약 그 파일이 존재하지 않으면?? 에러 처리도 해줘야 겠죠?


자, 그럼 하나하나 차근차근 해 볼까요?


우선 클래스를 하나 생성하고 메인 함수를 만들어 봅시다.


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


ReadFileAndPrint라는 이름의 자바파일을 하나 생성해서 메인함수를 정의했습니다.


자, 그럼 이제 뭘 해야 할 까요? 저 위에서 말씀드린 것처럼 파일명을 입력받아서 args로 전달해주는 것은 자바에서 알아서 자동으로 해줄테니


우리는 그 전달받은 파일명을 가지고 지지고 볶고 하면 되겠죠?


일단 입력 받은 파일명이 존재하는지를 확인해서 에러 처리를 해줘야겠습니다.



public static void main(String[] args) {
		
	// 1. 입력받은 파일이 있는지 검사
	if ( args.length == 0 ){
		System.out.println("입력받은 파일이 없습니다.");
		System.exit(0);
	}
}


위 코드는 args로 전달받은 값이 있는지 스트링 배열의 길이를 검사해서 입력받은 값이 없으면 메시지를 출력하고 프로그램을 종료하도록 해놓았습니다.


자, 그럼 실제로 입력 받은 값이 있을 때는 어떻게 해야 할 까요?


그 입력받은 값으로 파일을 읽어들여야 겠죠?


이제 아래 코드를 추가합니다.



// 2. 입력받은 파일이 존재하는지 검사
File file = new File(args[0]);

if ( file.exists() ){

}


입력받은 파일이 한개라는 가정 하에 args배열의 0번째 인덱스에 있는 값만 사용하고 있습니다.


파일을 자바소스로 읽어들일 때는 File 객체를 사용합니다. File 생성자에 파일명을 담고있는 args[0] 을 전달하여 new 키워드로 생성하면 해당 이름의 파일을 File 객체로 만들어 줍니다.


그리고 if 문을 통해서 해당 파일명을 갖는 파일이 실제로 시스템 상에 존재하는지 확인을 합니다.


if 문 안에서는 해당 파일명을 갖는 파일이 실제로 존재했을 때 해야할 일을 코드로 적어주면 되겠죠.


우리는 File  객체를 BufferedReader 를 이용해서 좀더 다루기 쉬운 형태로 바꿀 겁니다.


이제 if 문 안에 다음 소스를 추가해 볼까요?



// 3. 텍스트 파일의 내용을 읽어서 출력 BufferedReader br = new BufferedReader(new FileReader(file)); while( br.ready() ){ System.out.println(br.readLine()); } br.close();


위 코드를 보면 File 객체인 file을 FileReader로 감싼 다음 다시 BufferedReader로 감쌌습니다.


이렇게 하면 BufferedReader 의 readLine() 메서드를 이용해서 손쉽게 라인 단위로 파일을 읽어들일 수 있습니다.


내용이 존재하는지는 br.reader() 를 이용해서 검사를 하고 true가 반환될 경우에 계속해서 한줄씩 읽어내려가면서 출력하도록 로직이 구성되어있음을 확인할 수 있습니다.


자, 그럼 전체 소스를 다시 한번 보도록 하죠.



public class ReadFileAndPrint {     public static void main(String[] args) throws IOException {

// 1. 입력받은 파일이 있는지 검사 if ( args.length == 0 ){ System.out.println("입력받은 파일이 없습니다."); System.exit(0); } // 2. 입력받은 파일이 존재하는지 확인 File file = new File(args[0]); if ( file.exists() ){     // 3. 파일이 존재하면, 텍스트 파일의 내용을 읽어서 출력     BufferedReader br = new BufferedReader(new FileReader(file));     while( br.ready() ){ System.out.println(br.readLine());     }     br.close(); }

}



이제 자바 클래스 파일을 컴파일하고 실행할 때 인자로 원하는 텍스트 파일의 절대경로명을 넣어주세요. 


상대경로명을 넣을 경우 환경에 따라 파일을 못 찾을 수 있습니다.


파일의 내용이 잘 출력된다면 잘 따라오신겁니다.


어때요 ? 별로 어렵지 않죠??


이상으로 자바로 텍스트 파일 읽어서 출력하기 포스팅을 마치겠습니다.


궁금하신 점 있으면 댓글달아주세요 ^-^