java에서 파일 읽고 쓰기 방법을 알아 보겠습니다.

자바 내장 클래스인 FileWriter,  BufferedWriter(파일읽기) , FileReader,BufferedReader(파일쓰기)를 사용하도록 하겠습니다.

 

 

아래와 같이 try catch를 생성해주면, 

finally블록이 필요없어지게 됩니다. try catch블록에서 자동으로 close해주게 됩니다.

 

try( 객체 생성 ){

 

}catch(Exception e){

}finally{

객체.close()

}

아래 링크에 자세한 내용이 설명되어 있습니다.

https://vmpo.tistory.com/entry/java-try-catch-with-resources-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC?category=731823

 

[java] try catch with resources Exception 예외처리

오늘은 java 7부터 도입된 새로운 기능인 try catch with resources를 알아보겠습니다. 보통 파일 읽기 쓰기와 같이 AutoCloseable 인터페이스를 구현하는 경우 객체를 사용하고 꼭 close() 해주는 작업이 필요합..

vmpo.tistory.com

 

File Write


FileWriter 객체와 BufferedWrite 객체를 생성해줍니다. 

여기서 FileWriter객체를 생성할때 생정자에 true를 주면 파일 이어서 쓰기가 가능합니다.

default는 false입니다. (false로 하면 파일을 새로 쓰게 됩니다.)

package com.supercoding;


import java.io.*;

//파일 쓰고 읽기 테스트
public class FileMake {

    public static void main(String[] args) {

        /***********************FILE WRITE***********************/
        try( //요기서 객체를 생성하면 try종료 후 자동으로 close처리됨
                //true : 기존 파일에 이어서 작성 (default는 false임)
                FileWriter fw = new FileWriter( "coding532.txt" ,true);
                BufferedWriter bw = new BufferedWriter( fw );
                )
        {
            bw.write("손흥민"); //버퍼에 데이터 입력
            bw.newLine(); //버퍼에 개행 삽입
            bw.write("이강인");
            bw.newLine();
            bw.flush(); //버퍼의 내용을 파일에 쓰기
        }catch ( IOException e ) {
            System.out.println(e);
        }

        File f = new File("coding532.txt");
        // 파일 존재 여부 판단
        if (f.isFile()) {
            System.out.println("coding532.txt 파일이 있습니다.");
        }
    }

}

 

 

실행을 해보면,

파일 생성 후 파일 생성여부를 체크하도록 소스를 구현해두어 

아래처럼 콘솔창에 "coding53 파일이 있습니다" 문자열이 출력됩니다.

 

 

coding532.txt 파일이 해당 자바 프로젝트 경로에 파일이 생성됩니다.

 

 

File Read


파일을 읽을때는 아래 객체를 사용합니다.

FileReader,BufferedReader

 

FileReader의 생성자에는 파일경로를 작성해줍니다. 지금은 자바프로젝트 경로에 있으므로 파일명만 작성해도 읽어낼 수 있으나, 다른 경로에 있을 경우 상대경로 또는 절대경로를 입력해주시면 됩니다.

 

아래 코드에서 File Read 주석부터 보시면 됩니다.

package com.supercoding;


import java.io.*;

//파일 쓰고 읽기 테스트
public class FileMake {

    public static void main(String[] args) {

        /***********************FILE WRITE***********************/
        try( //요기서 객체를 생성하면 try종료 후 자동으로 close처리됨
                //true : 기존 파일에 이어서 작성 (default는 false임)
                FileWriter fw = new FileWriter( "coding532.txt" ,true);
                BufferedWriter bw = new BufferedWriter( fw );
                )
        {
            bw.write("손흥민"); //버퍼에 데이터 입력
            bw.newLine(); //버퍼에 개행 삽입
            bw.write("이강인");
            bw.newLine();
            bw.flush(); //버퍼의 내용을 파일에 쓰기
        }catch ( IOException e ) {
            System.out.println(e);
        }

        File f = new File("coding532.txt");
        // 파일 존재 여부 판단
        if (f.isFile()) {
            System.out.println("coding532.txt 파일이 있습니다.");
        }

        /***********************FILE READ***********************/
        try(
                FileReader rw = new FileReader("coding532.txt");
                BufferedReader br = new BufferedReader( rw );
                ){
            
            //읽을 라인이 없을 경우 br은 null을 리턴한다.
            String readLine = null ;
            while( ( readLine =  br.readLine()) != null ){
                System.out.println(readLine);
            }
        }catch ( IOException e ) {
            System.out.println(e);
        }

    }

}

2번정도 실행을 해보겠습니다.

아래와 같이 coding532.txt파일을 정상적으로 읽어 내었습니다.

파일에 문자열이 3번 작성되었고, 콘솔창에 파일 내용이 출력된 것을 확인 할 수 있습니다.

 

LIST
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기