일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Short
- 콜렉션
- https://start.spring.io
- 싱글턴
- 제너릭
- Jenkins
- Java
- 무한
- Scanner
- 싱글톤
- 빌드
- 제네릭
- 박싱
- 자동형변환
- 메소드
- 루프
- start.spring.io
- 인텔리제이
- maven
- unboxing
- boxing
- 스프링
- wrapper
- bootstrap
- 클래스
- 언박싱
- 내장객체
- suvlet
- dependency
- 컬렉션
Archives
- Today
- Total
Developer Gonie
[5주차] 82. 문자스트림, 특정 파일을 읽기위한 , 특정파일에 쓰기위한 연결다리(FileReader / FileWriter) - 한 글자씩 처리, 한글을 읽어오고 저장시 유용 본문
K-DigitalTraining 강의/1. Java
[5주차] 82. 문자스트림, 특정 파일을 읽기위한 , 특정파일에 쓰기위한 연결다리(FileReader / FileWriter) - 한 글자씩 처리, 한글을 읽어오고 저장시 유용
이대곤 2022. 6. 7. 12:12* 한글을 사용하려면 문자 스트림! FileReader / FileWriter
스트림에는 '문자 스트림'과 '바이트 스트림'이 존재하는데 FileInputStream / FileOutputStream은 바이트 스트림으로
영어나 특수문자 숫자는 잘 처리하나, 한글은 잘 처리를 못함. 깨짐.
한글을 다루고 싶다면 문자 스트림의 FileReader/FileWriter를 사용해야 함.
* 스트림.close()의 숨겨진 기능
close 해주면 버퍼에 있지만 아직 파일로 내보내지지 않은걸 내보내게 한다.
이와 비슷한 효과를 갖는 것으로 스트림.flush() 메소드가 있다.
* 여기서도 2차 스트림을 사용하고 싶은 경우 BufferedRead/BufferedWriter 클래스를 사용하면 됨.
예시코드
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Ex11_05_ReaderWriter {
public static void main(String[] args) {
// 바이트스트림 : FileInputStream/FileOutputStream
// 문자스트림 : FileWriter/FileReader
FileWriter fw = null;
FileReader fr = null;
try {
fw =new FileWriter("write.txt"); // 파일이 존재하지 않는 경우 new IOException()
fw.write("즐거운 자바수업~");
// 여기까진 파일에 쓰여진게 없이 버퍼에 문자열만 들어온 상태
// fw.close() 해주면 버퍼에 있던게 강제로 파일로 전달됨
fr = new FileReader("write.txt"); // 경로가 존재하지 않는 경우 new FileNotFoundException()
int i;
while((i = fr.read()) != -1) { // 아스키 코드로 한 글자씩 읽어옴
System.out.println(i);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fw.close(); // 스트림을 닫는 기능이지만, 이걸 해줘야 버퍼에 있는 문자열을 파일로 내보낼 수 있다.
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
'K-DigitalTraining 강의 > 1. Java' 카테고리의 다른 글
Comments