java.io.Reader 와 java.io.Writer

3141 단어 자바
14.3 문자 흐름
java.io.Reader,java.io.Writer 와 하위 클래스 등 은 문자 흐름(Character Stream)을 처리 하 는 관련 클래스 입 니 다.쉽게 말 하면 대류 데 이 터 를 하나의 문자(두 바이트)의 길이 단위 로 처리 하고(0~65 535,0x 0000~0xffff)적당 한 문자 인 코딩 변환 처 리 를 하 는 것 이다.즉,Reader,Writer 와 그 하위 클래스 는 이른바 텍스트 파일 의 문자 읽 기/쓰기 에 사용 할 수 있다.
14.3.1 Reader 와 Writer
java.io.Reader 와 java.io.Writer 는 유 니 코드 표준 문자 집합(Character Set)을 지원 합 니 다(바이트 흐름 은 ISO-Latin-1 8-bit 만 지원 합 니 다).스 트림 데 이 터 를 처리 할 때 시스템 의 기본 문자 인 코딩 에 따라 문자 변환 을 합 니 다.Reader 와 Writer 는 추상 적 인 클래스 로 텍스트 파일 의 문 자 를 읽 고 쓸 때 하위 클래스 를 사용 합 니 다.하위 클래스 는 관련 방법 을 다시 정의 합 니 다.
범례 14.15 에서 BIG 5 의 문자 와 ASCII 문 자 를 포함 하 는 텍스트 파일 을 읽 습 니 다.그 당시 BIG 5 의 문자 에 대한 처 리 는 새로운 String 인 스 턴 스 였 습 니 다.이 범례 를 바 꾸 고 Reader 의 하위 클래스 자바.io.InputStreamReader 를 사용 하여 읽 은 두 바 이 트 를 중국어 문자 로 바 꾸 어 화면 에 표시 합 니 다.
범례  ReaderDemo.java
package onlyfun.caterpillar;
import java.io.*;
public class ReaderDemo {
public static void main(String[] args) {
try {
PushbackInputStream pushbackInputStream =
new PushbackInputStream(
new FileInputStream(args[0]));
byte[] array = new byte[2];
  ByteArrayInputStream byteArrayStream =new ByteArrayInputStream(array);   // reader 는 읽 은 자릿수 그룹 에서 데 이 터 를 꺼 냅 니 다.InputStreamReader reader=new InputStreamReader(by teArray Stream);  int tmp = 0;int count = 0;   while((count = pushbackInputStream.read(array))!= -1){//두 바이트 가 정수 tmp=(short)((array[0]<8)|(array[1]&0xff)로 변환 합 니 다.tmp = tmp & 0xFFFF;   // BIG 5 인지 여 부 를 판단 합 니 다.만약 그렇다면 BIG 5 의 텍스트 if(tmp>=0xA 440&&tmp<0xFFFF){System.out.println("BIG 5:"+(char)reader.read())을 표시 합 니 다./Array InputStream 의 읽 기 커서 를 초기 화 합 니 다.//다음 reader 에서 데 이 터 를 다시 읽 을 수 있 습 니 다.byteArrayStream.reset();}else{//두 번 째 바 이 트 를 pushback InputStream.unread(array,1,1)로 되 돌려 줍 니 다.//ASCII 범 위 를 표시 하 는 문자 System.out.println("ASCII:"+(char)array[0]);}}}  pushbackInputStream.close();}catch(ArrayIndexOutOfBoundsException e){System.out.println("파일 이름 을 지정 하 십시오");}catch(IOException e) {e.printStackTrace();}}}
범례 14.16 에 대해 주의해 야 할 것 은 Reader 의 read()방법 입 니 다.이 방법 은 매번 한 글자 의 데 이 터 를 읽 고 시스템 의 기본 인 코딩 으로 문자 변환 을 한 다음 에 int 형식 으로 되 돌아 갑 니 다.실 행 된 결 과 는 범례 14.15 와 같 습 니 다.Reader 의 인 스 턴 스 를 구축 할 때 읽 을 때의 인 코딩 을 직접 지정 할 수도 있 습 니 다.예 를 들 면:
InputStreamReader reader =
new InputStreamReader(byteArrayStream, "BIG5");

 
 
InputStream,OutputStream 과 Reader,Writer 의 차이 점 1,차이 점
 InputStream,OutputStream 은 byte 배열 을 직접 조작 합 니 다. Reader,Writer 는 작업 할 때 decode,encode 를 진행 하고 시스템 속성 인 코딩 형식 에 따라 데 이 터 를 인 코딩 하거나 디 코딩 합 니 다.그러나 파일 의 인 코딩 형식 이 현재 시스템 과 일치 하지 않 을 때 인 코딩 변환 이 필요 합 니 다.전환
 new OutputStreamWriter(FileUtils.openOutputStream(new File(filePath)), "ms932")  new InputStreamReader(FileUtils.openInputStream(new File(filePath)), "ms932")  
출처:DIY 부락(http://www.diybl.com/course/3_program/java/javajs/200797/70164.html)

좋은 웹페이지 즐겨찾기