자바 7 의 전통 I / O - 문자 클래스 CharArray Reader 와 CharArray Writer
CharArray Reader 와 CharArray Writer 는 문자 배열 흐름 입 니 다.이것 은 ByteArray InputStream, ByteArray OutputStream 과 유사 합 니 다. ByteArray XXputStream 은 바이트 배열 흐름 이 고 CharArray XX 는 문자 배열 흐름 입 니 다.
CharArray Writer 는 문자 배열 을 읽 는 데 사 용 됩 니 다. Writer 클래스 에 계승 합 니 다.문자 단위 로 배열 작업 을 진행 합 니 다.다음은 주요 방법 으로 이 루어 진 소스 코드 를 살 펴 보 겠 습 니 다.
1. 생 성 및 초기 화
CharArray Writerer 에서 정의 하 는 중요 한 변수 와 구조 함 수 를 보십시오.
view source print ?
01. protected char buf[]; // , 02. protected int count; // 03. public CharArrayWriter() { 04. this ( 32 ); 05. } 06. public CharArrayWriter( int initialSize) { 07. if (initialSize < 0 ) { 08. throw new IllegalArgumentException( "Negative initial size: " + initialSize); 09. } 10. buf = new char [initialSize]; 11. } 기본 buf 배열 의 크기 는 32 이 며, 스스로 지정 할 수 있 습 니 다.
CharArray Reader 에서 정의 하 는 중요 한 변수 와 구조 함수:
view source print ?
01. protected char buf[]; // , 02. protected int pos; // 03. protected int markedPos = 0 ; // 04. 05. protected int count; // 06. 07. public CharArrayReader( char buf[]) { 08. this .buf = buf; 09. this .pos = 0 ; 10. this .count = buf.length; 11. } 12. 13. public CharArrayReader( char buf[], int offset, int length) { 14. if ((offset < 0 ) || (offset > buf.length) || (length < 0 ) || ((offset + length) < 0 )) { 15. throw new IllegalArgumentException(); 16. } 17. this .buf = buf; 18. this .pos = offset; 19. this .count = Math.min(offset + length, buf.length); 20. this .markedPos = offset; 21. } 2, CharArray Writerer 기록 데이터
view source print ?
01. public void write( int c) { 02. synchronized (lock) { 03. int newcount = count + 1 ; 04. if (newcount > buf.length) { 05. buf = Arrays.copyOf(buf, Math.max(buf.length << 1 , newcount)); 06. } 07. buf[count] = ( char )c; 08. count = newcount; 09. } 10. } 11. 12. public void write( char c[], int off, int len) { 13. if ((off < 0 ) || (off > c.length) || (len < 0 ) || ((off + len) > c.length) || ((off + len) < 0 )) { 14. throw new IndexOutOfBoundsException(); 15. } else if (len == 0 ) { 16. return ; 17. } 18. synchronized (lock) { 19. int newcount = count + len; 20. if (newcount > buf.length) { 21. buf = Arrays.copyOf(buf, Math.max(buf.length << 1 , newcount)); 22. } 23. System.arraycopy(c, off, buf, count, len); 24. count = newcount; 25. } 26. } 27. 28. public void write(String str, int off, int len) { 29. synchronized (lock) { 30. int newcount = count + len; 31. if (newcount > buf.length) { 32. buf = Arrays.copyOf(buf, Math.max(buf.length << 1 , newcount)); 33. } 34. str.getChars(off, off + len, buf, count); 35. count = newcount; 36. } 37. } Write 클래스 에서 정의 하 는 write () 방법 과 append () 방법 을 실현 하 였 습 니 다.사실 현대 코드 는 비교적 간단 하 다. 앞에서 비슷 한 방법 은 이미 여러 번 말 했 으 니 여 기 는 더 이상 군말 하지 않 는 다.
3, CharArrayReader 읽 기 데이터
CharArray Reader 는 문자 배열 을 읽 는 데 사 용 됩 니 다. Reader 에 계승 합 니 다.조작 한 데 이 터 는 문자 단위 이다.다음은 주요 방법 으로 이 루어 진 소스 코드 를 살 펴 보 겠 습 니 다.
view source print ?
01. public int read() throws IOException { 02. synchronized (lock) { 03. ensureOpen(); 04. if (pos >= count) 05. return - 1 ; 06. else 07. return buf[pos++]; 08. } 09. } 10. 11. public int read( char b[], int off, int len) throws IOException { 12. synchronized (lock) { 13. ensureOpen(); 14. if ((off < 0 ) || (off > b.length) || (len < 0 ) || 15. ((off + len) > b.length) || ((off + len) < 0 )) { 16. throw new IndexOutOfBoundsException(); 17. } else if (len == 0 ) { 18. return 0 ; 19. } 20. 21. if (pos >= count) { 22. return - 1 ; 23. } 24. if (pos + len > count) { 25. len = count - pos; 26. } 27. if (len <= 0 ) { 28. return 0 ; 29. } 30. System.arraycopy(buf, pos, b, off, len); 31. pos += len; 32. return len; 33. } 34. } 문자열 을 조작 하 는 클래스 StringReader, StringWriter 와 유사 합 니 다. 사실 문자 배열 은 문자열 작업 과 일치 합 니 다. 문자열 은 밑 에 있 는 것 이 실제 적 으로 문자 배열 로 이 루어 집 니 다.StringReader 와 StringWriter 류 를 이해 하면 쉽게 이해 할 수 있 습 니 다.그리고 이 두 가지 유형 도 스 레 드 가 안전 하 다 는 것 을 알려 드 립 니 다.
간단 한 테스트 프로그램 을 만 듭 니 다:
view source print ?
1. char [] x={ 'a' , 'd' , 'p' }; 2. CharArrayWriter cw= new CharArrayWriter(); 3. cw.write(x, 0 , 2 ); 4. cw.append( "x" ); 5. System.out.println(cw.toString()); // adx 6. 7. CharArrayReader cr= new CharArrayReader(cw.toCharArray()); 8. System.out.println(( char )cr.read()); // a
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.