● FileReader
- Stream을 여는데 사용하는 클래스
- 생성자의 매개변수로는 File 객체를 알려준다.
● BufferedReader
- 버퍼를 생성하는데 사용하는 클래스
- 생성자의 매개변수로는 FileReader 객체를 알려준다.
※ readLine()
- 파일 속 한 줄을 문자열로 읽어온다.
- 더 이상 읽어올 문자열이 없다면 null값을 return한다.
● 파일 경로
- 파일 경로에 파일이 없을 경우에는 파일을 만들어준다.
- 기본 경로는 해당 프로젝트 폴더 안으로 설정되어있다.
1. 절대경로
- 처음부터 끝까지 파일 경로를 알려주는 방법
(ex) File("C:\\Java\\memo\\test.txt")
2. 상대경로
- 프로젝트 위치에 따라 달라진다.
- 기본 위치는 본인 프로젝트 폴더로 설정되어있다.
(ex) File("..\\..\\memo\\test.txt");
※ ..\\ : 상위 폴더를 의미한다.
실습(파일 출력(1))
0. 파일 객체 만들기
File f = new File("task.txt"); // 없는 경로를 작성하면 FileNotFoundException 오류가 발생한다.
FileReader fr = null;
BufferedReader br = null;
1. 파일 데이터가 전송될 수 있도록 Stream 열어주기
fr = new FileReader(f);
1-2. 버퍼 생성하기
br = new BufferedReader(fr);
2. 반복문을 이용하여 파일 읽기
- line의 초기화 값을 br.readLine();로 설정한 후 반복문 진행하기
String line = br.readLine();
while(line != null) {
System.out.println(line);
line = br.readLine();
}
- line의 초기화 값을 ""(공백)으로 설정한 후 반복문 진행하기
String line = "";
while((line = br.readLine()) != null) {
System.out.println(line);
}
3-0. 버퍼 닫기
if(br != null) br.close();
3. Stream 닫기
if(fr != null) fr.close();
※ 전체 코드
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReadTest {
public static void main(String[] args) {
// 파일 객체 만들기
File f = new File("task.txt"); // 없는 경로를 작성하면 FileNotFoundException 오류가 발생한다.
FileReader fr = null;
BufferedReader br = null;
try {
// 스트림 열기
fr = new FileReader(f);
// 버퍼 생성하기
br = new BufferedReader(fr);
// 파일 읽기
String line = br.readLine();
while(line != null) {
System.out.println(line);
line = br.readLine();
}
// String line = "";
// while((line = br.readLine()) != null) {
// System.out.println(line);
// }
} catch (FileNotFoundException e) {
// FileNotFoundException은 IOException으로 한 번에 잡아줄 수 있다.
System.out.println("파일 없음");
} catch(IOException e) {
} finally {
try {
if(br != null) br.close();
if(fr != null) fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

실습(파일 출력(2))
- FileRead.txt 파일을 콘솔창에 출력하시오
0. "..\\..\\memo" 경로에 "FileRead.txt" 생성한 후 아래 내용 저장하기
FileReadTask
FileReadTask
FileReadTask
1. 파일 객체 만들기
File f = new File("..\\..\\memo\\FileRead.txt");
FileReader fr = null;
BufferedReader br = null;
2. 파일 데이터가 전송될 수 있도록 Stream 열어주기
fr = new FileReader(f);
2-2. 버퍼 생성하기
br = new BufferedReader(fr);
3. 반복문을 이용하여 파일 읽기
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
4-0. 버퍼 닫기
if(br != null) br.close();
4. Stream 닫기
if(fr != null) fr.close();
※ 전체 코드
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReadTask {
public static void main(String[] args) {
File f = new File("..\\..\\memo\\FileRead.txt");
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(f);
br = new BufferedReader(fr);
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
} finally {
try {
if(br != null) br.close();
if(fr != null) fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
