JAVA

문자 단위 입출력 스트림

Stater 2019. 10. 20. 09:00

문자 단위 스트림

- Reader : 문자 단위로 읽는 최상위 스트림

- Writer: 문자 단위로 쓰는 최상위 스트림

 

추상 메서드를 포함한 추상 클래스로 하위 클래스가 상속받아 구현

 

■ reader클래스

스트림 클래스 설명
FileReader 파일에서 문자 단위로 읽는 스트림 클래스
InputStreamReader 바이트 단위로 읽는 자료를 문자로 변환 해주는 보조 스트림 클래스
BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공해주는 보조 스트림

■ writer클래스

스트림 클래스 설명
FileWriter 파일에 문자 단위로 출력하는 스트림 클래스
OutputStreamWRiter 파일에 바이트 단위로 출력한 자료를 문자로 변환해 주는 보조 스트림
BufferedWriter 문자로 쓸 때 배열을 제공하여 한꺼번에 쓸 수 있는 기능을 제공해주는 보조 스트림

 

■ FileReader / FileWriter 

- 파일에 문자를 읽고 쓸때 가장 많이 사용하는 클래스

- 문자의 인코딩 방식을 지정할 수 있다.

 

package reader;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderTest {

	public static void main(String[] args) throws IOException {
		
		//
		FileReader fis1 = new FileReader("reader.txt");
		//바이트 단위이기 떄문에 한글이 깨짐
		FileInputStream fis = new FileInputStream("reader.txt");
		int i ;
		int s ;
		//한글/영어가깨짐
		while((i=fis.read()) !=-1) {
			System.out.print((char)i);
		}
		//한글과 영어 모두 잘 읽혀짐
		while((s=fis1.read()) !=-1) {
			System.out.print((char)s);
		}

		fis.close();
		
	}

}

 

-나중 꼭 참조-

- 소켓 바이트로 읽고-> 인풋스트림리더로 다시변환(보조스트림의사용) 숙지

 

package reader;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class FileReaderTest {

	public static void main(String[] args) throws IOException {
		
		//FileInputStream byte단위로 읽고 나서 소켓 같은 경우 무조건 바이트 단위로 읽는다.
		// 그런경우 다시 변환 할 경우에 InputStreamReader을 사용해서 다시 변환해줘야한다.(보조스트림)
		FileInputStream fis = new FileInputStream("reader.txt");
		//보조스트림
		InputStreamReader isr = new InputStreamReader(fis);
		
		int i ;
		while((i=isr.read()) !=-1) {
			System.out.println((char)i);
		}

		isr.close();
	}

}

 

■ Writer 사용

 

package 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("안녕하세요");
		//D,E출력
		fw.write(buf,2,2);
		
		fw.close();
		
		System.out.println("THE END");
	}

}
반응형

'JAVA' 카테고리의 다른 글

보조 스트림  (0) 2019.10.23
Socket통신 HTTP 통신  (0) 2019.10.22
바이트 단위 입출력 스트림  (0) 2019.10.19
자바 입출력 스트림  (0) 2019.10.18
Multi-Thread 프로그래밍  (0) 2019.10.17