일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- HTTP 메서드
- javascript
- 캐시
- VUE
- dependency injection
- vue-cli
- Excel
- vuex
- Setter
- Vue.js
- di
- 프로토타입
- 로그인
- js
- BEAN
- thymeleaf
- DB
- Kotlin
- Repository
- 라이프 사이클
- 싱글톤
- HTTP
- JPA
- Security
- 의존성 주입
- Stateless
- Java
- Spring
- Singleton
- cache
- Today
- Total
jhhan의 블로그
BufferedReader & BufferedWriter 본문
이번에는 BufferedReader와 BufferedWriter에 대해서 알아보겠습니다.
이전 글에서 한번 다룬 적이 있긴 하지만, 그 때 너무 대충 적었습니다.
사실 이해도 조금 못하기도 했고, 약간 블로그를 무조건 적어야 한다 느낌으로 적느라 내용이 부실합니다.
이번에 좀 제대로 알고 제대로 적어보겠습니다.
두 클래스 모두 버퍼를 사용합니다.
BufferedReader는 자바에서 자주 사용하는 Scanner와 같다고 생각하면 됩니다.
대신 입력받는 값이 많을 때는 BufferedReader가 더 효율적이라는 것을 기억하시면 됩니다.
BufferedWriter는 자바에서 자주 사용하는 System.out.println과 비슷합니다.
역시 출력값이 많을 때는 BufferedWriter가 더 효율적입니다.
저는 파일입출력과 관련해서만 다룰 것입니다.
코드를 살펴보겠습니다.
public class Test {
public static void main (String[] args) {
try {
FileReader fr = new FileReader("C:/sample/1.txt");
FileWriter fw = new FileWriter("C:/sample/2.txt");
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
String line = "";
while((line = br.readLine()) != null) {
// System.out.print(br.read());
System.out.println(line);
bw.write(line);
bw.newLine();
}
bw.write("\nThis is copied...");
bw.flush();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Finished!");
}
}
FileReader와 FileWriter가 사용되었는데, 각각 파일읽기와 파일쓰기에 관련된 클래스라고 생각하시면 됩니다.
- FileReader fr = new FileReader("C:/sample/1.txt"); - 파일을 읽기 때문에 파일이 이 위치에 있어야하고, 이름도 동일해야 합니다.
- FileWriter fw = new FileWriter("C:/sample/2.txt"); - 파일에 쓰기를 실행합니다.
- 파일이 이 위치에 있으면 새로운 내용을 덮어쓰게 되고, 없다면 파일이 생성된 후 파일에 내용을 쓰게 됩니다.
- BufferedReader br = new BufferedReader(fr); - 파일을 읽기 위한 선언입니다.
- BufferedWriter bw = new BufferedWriter(fw); - 파일에 쓰기 위한 선언입니다.
while((line = br.readLine()) != null)
: readline()은 한 줄을 읽는 메소드 입니다.
파일을 계속 읽다 파일이 끝나면 그 때서야 null값을 반환합니다.
// 제가 주석 처리한 부분은 read() 메소드로 한글자만을 읽으며, 그 글자를 int값으로 변환합니다.
// 우리가 흔히 아는 ASCII 코드값으로 바꿔줍니다.
BufferedWriter와 관련된 메소드들을 따로 살펴보겠습니다.
- write() : 파일에 작성하는 부분입니다. 따로 다음 줄로 넘어가지 않기 때문에 \n을 사용해야합니다.
- newLine() : 아니면 이 메소드를 사용해서 다음 줄로 넘어가면 됩니다.
- flush() : 버퍼에 남아있는 내용들을 모두 출력합니다. 꼭 필요한 과정입니다.
- close() : 파일을 닫아줍니다.
마지막에 flush, close를 차례대로 해줘야 작성한 내용이 저장이 됩니다.
결과를 보면
이런 결과창이 나오는 것을 확인할 수 있습니다.
또한 2.txt가 생성된 것을 확인할 수 있는데
위와 같이 작성되서 저장된 것을 확인할 수 있습니다.
BufferedReader, BufferedWriter를 사용해서 파일을 다룬다면
FileReader, FileWriter가 필수인 것 같습니다.
이 때 파일의 위치가 중요합니다.
파일의 경로를 정확히 안 다음 사용하셔야 오류가 나타나지 않을 것입니다.
생각날 때 정리하는 것이어서 내용은 좀 짧습니다.
이렇게 마치겠습니다.
'JAVA' 카테고리의 다른 글
자바와 스프링 그 사이(2) (0) | 2020.12.26 |
---|---|
자바와 스프링 그 사이(1) (0) | 2020.12.16 |
Java의 정석을 시작하자(7)(2/11) (0) | 2020.02.14 |
Java의 정석을 시작하자(6)(2/10) (0) | 2020.02.14 |
Java의 정석을 시작하자(5)(2/8) (0) | 2020.02.14 |