Super Coding Addict
Ch14. 자바 입출력 (4) 본문
< 문자 단위 입출력 스트림 >
* FileReader와 FileWriter
- 파일의 문자를 읽고 쓸 때 가장 많이 사용하는 클래스
- 예제
# FileReader 클래스
--> 읽어올 텍스트 파일
--> 이것을 FileInputStream으로 읽게 되면?
package Ch14.stream.reader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileReaderTest {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("reader.txt");
int i;
while ( (i = fis.read()) != -1) {
System.out.print((char)i);
}
fis.close();
}
}
--> 한글은 2바이트이므로 읽지 못하고 영어만 읽어온다
--> FileInputStream대신, FileReader로 읽어오면?
package Ch14.stream.reader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest {
public static void main(String[] args) throws IOException {
FileReader fis = new FileReader("reader.txt");
int i;
while ( (i = fis.read()) != -1) {
System.out.print((char)i);
}
fis.close();
}
}
--> 다음과 같이 한글도 잘 읽어오게 된다
--> 또는, FileInputStream으로 먼저 바이트를 읽은 다음, 보조스트림인 InputStreamReader로 이 스트림을 감싸주면 마찬가지로 한글도 잘 읽어올 수 있다
package Ch14.stream.reader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class FileReaderTest {
public static void main(String[] args) throws IOException {
//바이트 단위로 읽기
FileInputStream fis = new FileInputStream("reader.txt");
//보조스트림으로 감싸주기
InputStreamReader isr = new InputStreamReader(fis);
int i;
while ( (i = isr.read()) != -1) {
System.out.print((char)i);
}
isr.close(); //보조스트림을 close하면 원스트림까지 close됨
}
}
--> 보조스트림인 InputStreamReader 생성자 인자로 FileInputStream 객체인 fis를 넣어주고, 읽을 땐 보조스트림인 isr로 읽고 닫는다
--> 소켓에서 읽을 때는 무조건 바이트 단위로 읽게 되므로 이런 경우처럼 보조스트림의 도움을 받는다
--> FileOutputStream도 마찬가지로 바이트 단위로 쓴 후 OutputStremaWriter로 감쌀 수가 있다
#FileWriterTest 클래스
package Ch14.stream.writer;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterTest {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("writer.txt");
fw.write('A');
char[] buf = {'B', 'C', 'D', 'E', 'F'};
fw.write(buf);
fw.write("안녕하쇼");
fw.write(buf, 2, 2);
fw.close();
System.out.println("end");
}
}
--> char, char[], String 타입 등으로 write() 가능
--> writer.txt파일에 write()가 잘 되었다
'JAVA 문법' 카테고리의 다른 글
Ch14. 자바 입출력(6) (0) | 2021.02.20 |
---|---|
Ch14. 자바 입출력 (5) (0) | 2021.02.18 |
Ch14. 자바 입출력 (3) (0) | 2021.02.18 |
Ch14. 자바 입출력 (2) (0) | 2021.02.16 |
Ch14. 자바 입출력 (1) (0) | 2021.02.16 |