이전글:

2020/12/12 - [JAVA] - 바이트 단위 문자 입출력

 

바이트 단위 문자 입출력

이전 글: 2020/12/12 - [JAVA] - 표준입출력 표준입출력" data-og-description="프로그램에서 사용하는 표준입출력은 간단하게 키보드 -> 프로그램 -> 출력 프린트 라고 생각하면 쉬울것같습니다. 쉬운 개념

kwaksh2319.tistory.com

이번엔 바이트 단위가 아니라 문자 단위로 스트림을 해보겠습니다.

여기서 점점 느끼셨겟지만 바이트 -> 문자 이런식으로 변화한다고 느꼈을겁니다.

즉 다음에 알려드릴 보조 스트림에 관련한건데요 

아래 링크에서 보조 스트림에 대해 간략한 설명이 있는데요

말그대로 파일을 여는 바이트 스트림의 보조 스트림을 통해서 문자형식으로 읽거나 쓸수 있게됩니다.

이러한 방식은 나중에 배울 데코레이션 디자인패턴 방식이라고 합니다.

이전글:

2020/12/12 - [JAVA] - 입출력 스트림

 

입출력 스트림

입출력 스트림이란? 네트웍에서 자료의 흐름이 물과 같다는 의미에서 유래 다양한 입출력 장치에 독립적으로 일관성 있는 입출력 방식 제공 입출력이 구현되는 곳에서 모두 I/O 스트림을 사용 (E

kwaksh2319.tistory.com

 

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

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

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

아래 코드를 보시면 간단한 예제 코드입니다.

그렇다면 전부다 보지말고 간단한 예시 코드 한쪽만 쪼개서 확인해보겠습니다.

package Test01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	
	
	
	
	public static void main(String [] args) throws IOException  {
		  System.out.println("");
	      System.out.println("===============read==================");
	      System.out.println("");
      FileInputStream fis=new FileInputStream("reader.txt"); //byte read
      InputStreamReader isr=new InputStreamReader(fis);//보조 스트림 byte를 문자로 바꿔줌 
      int i;
      while((i=isr.read())!=-1) {
    	  System.out.print((char)i);
      }
      fis.close();
      
      System.out.println("");
      System.out.println("=======================================");
      System.out.println("");
      FileReader fir=new FileReader("reader.txt");
      int k;
      while((k=fir.read())!=-1) {
    	  System.out.print((char)k);
      }
      fir.close();
      
      
      System.out.println("");
      System.out.println("================writer=================");
      System.out.println("");
      
      
      
      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");
      
	}
	
	
	
}

아래 코드를 보시면 

read.txt를 FileInputStream을 통해서 읽어옵니다. 즉 read byte 단위로 읽어온셈이죠 

그렇다면 이를 문자로 바꿔주기위해서  InputStreamReader로 읽어옵니다 

그렇게 되면 byte 단위들이 문자로 변경되어 출력이 가능합니다.

write도 이와 마찬가지입니다. 

  System.out.println("===============read==================");
	      System.out.println("");
      FileInputStream fis=new FileInputStream("reader.txt"); //byte read
      InputStreamReader isr=new InputStreamReader(fis);//보조 스트림 byte를 문자로 바꿔줌 
      int i;
      while((i=isr.read())!=-1) {
    	  System.out.print((char)i);
      }
      fis.close();
      

'프로그래밍언어 > JAVA' 카테고리의 다른 글

<JAVA>직렬화  (0) 2020.12.13
<JAVA>보조 스트림  (0) 2020.12.12
<JAVA>바이트 단위 문자 입출력  (0) 2020.12.12
<JAVA>표준입출력  (0) 2020.12.12
<JAVA>입출력 스트림  (0) 2020.12.12

+ Recent posts