텍스트 파일 읽기 (BufferedReader 사용)

텍스트 파일을 읽는 순서는 다음과 같습니다.

  1. File 인스턴스를 생성
  2. File 인스턴스를 파라미터로 하는 FileReader 인스턴스 생성
  3. FileReader 인스턴스를 파라미터로 하는 BufferedReader 생성
  4. BufferedReader에서 읽은 텍스트를 임시로 저장하는 String 타입의 변수 생성
  5. while문과 버퍼리더의 readLine() 을 이용해 텍스트 파일을 한 줄씩 읽음
  6. BufferedReaderclose() 시킴

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class ReadEx {
  public static void main(String[] args) {
      
      File file = new File("example.txt");
      try{
          FileReader fr = new FileReader(file);
          BufferedReader br = new BufferedReader(fr);
          String line = "";
          while((line = br.readLine()) != null) {
              System.out.println(line);                
          }
          br.close();
      } catch(Exception e){
          
      }
  
  }
  
}

위 코드를 try with resources(자바 7 이상 지원)으로 바꾸면 다음과 같습니다.

try(FileReader fr = new FileReader(file);
		BufferedReader br = new BufferedReader(fr);){
	String line = "";
	while((line = br.readLine()) != null) {
		System.out.println(line); 
	}
} catch (FileNotFoundException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}

 

텍스트 파일 쓰기 (BufferedWriter 사용)

텍스트 파일을 쓰는 순서는 다음과 같습니다.

  1. FileWriter 인스턴스 생성
  2. FileWriter 인스턴스를 파라미터로 하는 BufferedWriter 생성
  3. BufferedWriterwrite(), nextLine()등을 이용해 파일 기록
  4. BufferedWriterflush()를 이용해 버퍼를 비우고 파일 기록
  5. BufferedWriterclose() 시킴

 

import java.io.BufferedWriter;
import java.io.FileWriter;

public class WriteEx {
  public static void main(String[] args) throws Exception {
    FileWriter fw = new FileWriter("writeEx.txt", false);
    // 위에서 false는 isAppend 옵션으로, true를 하면 파일 뒤에 이어서 기록하며, 
    // false의 경우 파일을 초기화한다음 처음부터 기록
    
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write("김밥 1줄");
    bw.newLine();
    bw.write("김밥 2줄");
    bw.flush();
	bw.close();
  }

}

위 코드를 try with resources(자바 7 이상 지원)으로 바꾸면 다음과 같습니다.

import java.io.BufferedWriter;
import java.io.FileWriter;

public class WriterEx2 {
  public static void main(String[] args) {
    try(BufferedWriter bw = new BufferedWriter(new FileWriter("writeEx2.txt", false))) {
      for(int i = 1; i <= 10; i++) {
        bw.write(String.format("김밥 %d줄", i));
        bw.newLine();
      }
      bw.flush();
    } catch(Exception e) {

    }
  }

}

 

예제 – 간단한 로그 기록


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class LogSave{
private static String filePath = "log.txt";
public static void write(Object o) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd kk:mm:ss", Locale.getDefault());
String date = sdf.format(cal.getTime());
String out = "[" + date + "] " + o;
System.out.println(out);
try(BufferedWriter bw = new BufferedWriter(new FileWriter(filePath, true))){
bw.append(out);
bw.newLine();
} catch(Exception e) {
e.printStackTrace();
}
}
public static String getFilePath() {
return filePath;
}
public static void setFilePath(String filePath) {
LogSave.filePath = filePath;
}
}

view raw

LogSave.java

hosted with ❤ by GitHub


public class LogSaveTest {
public static void main(String[] args) {
System.out.println(LogSave.getFilePath());
LogSave.setFilePath("log2.txt");
LogSave.write("초기화를 실시합니다.");
}
}

시스템 콘솔에 출력함과 동시에 텍스트 파일에도 해당 내용을 기록하는 예제입니다.