자바: 텍스트 파일 입출력 (예제 - 간단한 로그 기록)
텍스트 파일 읽기 (BufferedReader 사용)
텍스트 파일을 읽는 순서는 다음과 같습니다.
File인스턴스를 생성File인스턴스를 파라미터로 하는FileReader인스턴스 생성FileReader인스턴스를 파라미터로 하는BufferedReader생성BufferedReader에서 읽은 텍스트를 임시로 저장하는String타입의 변수 생성while문과 버퍼리더의readLine()을 이용해 텍스트 파일을 한 줄씩 읽음BufferedReader를close()시킴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 이상 지원)으로 바꾸면 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
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 사용)
텍스트 파일을 쓰는 순서는 다음과 같습니다.
FileWriter인스턴스 생성FileWriter인스턴스를 파라미터로 하는BufferedWriter생성BufferedWriter의write(),nextLine()등을 이용해 파일 기록BufferedWriter의flush()를 이용해 버퍼를 비우고 파일 기록BufferedWriter를close()시킴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 이상 지원)으로 바꾸면 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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) {
}
}
}
예제 - 간단한 로그 기록
https://gist.github.com/ayaysir/43fac1154644eaf4178197cbe916fe66
시스템 콘솔에 출력함과 동시에 텍스트 파일에도 해당 내용을 기록하는 예제입니다.
This post is licensed under
CC BY 4.0
by the author.



