JAVA Output Stream Writer 흐름 의 실현
4573 단어 JAVAOutputStreamWriter흐르다.
API 설명:OutputStreamWriter 는 문자 에서 바이트 로 흐 르 는 브리지 입 니 다.지정 한 문자 집합 을 사용 하여 기록 한 문 자 를 바이트 로 인 코딩 합 니 다.사용 하 는 문자 집합 은 이름 으로 지정 할 수도 있 고 명확 하 게 지정 할 수도 있 으 며 플랫폼 의 기본 문자 집합 을 받 아들 일 수도 있 습 니 다.
write()방법 을 호출 할 때마다 주어진 문자 에 인 코딩 변환 기 를 호출 합 니 다.생 성 된 바 이 트 는 바 텀 출력 흐름 을 기록 하기 전에 버퍼 에 누적 되 어 있 습 니 다.이 버퍼 의 크기 를 지정 할 수 있 지만,기본 값 으로 는 충분 하 며,대부분의 용도 로 사용 할 수 있 습 니 다.write()방법 에 전 달 된 문 자 는 버퍼 링 되 지 않 습 니 다.
최고 효율 을 얻 기 위해 서 는 잦 은 변환기 호출 을 피하 기 위해 Buffered Writer 에 Output Stream Writer 를 포장 하 는 것 을 고려 하 십시오.
1)OutputStreamWriter 는 문자 에서 바이트 로 흐 르 는 브리지 인 데 어떻게 이해 합 니까?
1.문자 의 출력 은 문자 흐름 을 통 해 조작 해 야 하지만 본질 은 마지막 으로 바이트 흐름 을 통 해 컴퓨터 에 저장 합 니 다.
2.그러므로 OutputStreamWriter 흐름 의 역할 은 바로 바이트 흐름 을 바 텀 출력 흐름 으로 한 다음 에 문자 출력 흐름 을 구축 하 는 것 입 니 다.문자 출력 흐름 은 문 자 를 흐름 에 출력 한 다음 에 지정 한 문자 집합 을 통 해 흐름 중의 문 자 를 바이트 로 인 코딩 하여 바이트 흐름 에 출력 하 는 것 입 니 다.그 역할 은 바로 하나의 교량 으로 쌍방 을 연결 시 키 는 것 입 니 다.
2)사용 하 는 문자 집합 은 이름 으로 지정 할 수도 있 고 명확 하 게 지정 할 수도 있 으 며 플랫폼 의 기본 문자 집합 을 받 아들 일 수도 있 습 니 다.어떻게 이해 합 니까?
Output StreamWriter 흐름 의 구조 방법 은 문자 집합 을 지정 하거나 기본 값 을 설정 하지 않 습 니 다.
3)write()방법 을 호출 할 때마다 주어진 문자 에 인 코딩 변환 기 를 호출 합 니 다.생 성 된 바이트 가 바 텀 출력 흐름 을 기록 하기 전에 버퍼 에 누적 되 어 어떻게 이해 합 니까?
출력 스 트림 Writer 에는 출력 할 때마다 문자 인 코딩 된 바 이 트 를 저장 하 는 데 사용 되 는 바이트 버퍼 가 존재 합 니 다.그리고 문자 출력 이 끝나 면 저 장 된 바 이 트 를 한꺼번에 바 텀 바이트 출력 흐름 에 출력 합 니 다.
4)write()방법 에 전 달 된 문 자 는 버퍼 링 되 지 않 습 니 다.어떻게 이해 합 니까?
잘 이해 되 지 않 습 니 다.write()방법 은 문 자 를 전달 하 는 방법 으로 실제 참조 하기 때 문 입 니 다.이 문자 가 버퍼 링 되 지 않 으 면 버퍼 의 바이트 가 어디에서 오 는 지~~~~~
5)잦 은 변환기 호출 을 피하 기 위해 Buffered Writer 에 Output Stream Writer 를 포장 하 는 것 을 고려 합 니까?
1.OutputStreamWriter 대상 을 통 해 BufferedWriter 대상 을 구축 하여 문자 출력의 효율 을 높 일 수 있 습 니 다.
2.OutputStreamWriter 에서 문자 인 코딩 기 를 자주 호출 하여 전환 하 는데 이런 전환 과정 은 자원 을 많이 소모 합 니까?
public class OutputStreamWriter extends Writer{}
2.Output StreamWriter 흐름 구조 함수1)출력 흐름 을 이용 하여 기본 문자 인 코딩 을 구축 하 는 OutputStreamWriter 흐름:본질은 StreamEncoder 대상 초기 화
private final StreamEncoder se;
public OutputStreamWriter(OutputStream out) {
super(out);
try {
se = StreamEncoder.forOutputStreamWriter(out, this, (String)null);
} catch (UnsupportedEncodingException e) {
throw new Error(e);
}
}
2)지 정 된 문자 인 코딩 을 통 해 OutputStreamWriter 흐름 구축:본질은 StreamEncoder 대상 을 초기 화 하 는 것 이지 만 문자 인 코딩 을 지 정 했 습 니 다
public OutputStreamWriter(OutputStream out, String charsetName)
throws UnsupportedEncodingException
{
super(out);
if (charsetName == null)
throw new NullPointerException("charsetName");
se = StreamEncoder.forOutputStreamWriter(out, this, charsetName);
}
3)FileWriter 류 구 조 는 OutputStreamWriter 류 구조 방법 을 호출 하고,OutputStreamWriter 류 구조 방법 은 본질 적 으로 StreamEncoder 대상 을 초기 화 하 는 것 이 므 로 최종 실현 은 StreamEncoder 소스 코드 를 찾 아 봐 야 한다.3.Output StreamWriter 흐름 API
1)스 트림 에 문 자 를 기록 합 니 다:본질은 StreamEncoder 를 호출 하 는 write(int c)방법 입 니 다.
public void write(int c) throws IOException {
se.write(c);
}
2)문자 배열 의 일부분 을 흐름 에 기록 합 니 다:본질 적 으로 StreamEncoder 의 write(char cbuf[],int off,int len)방법 을 호출 합 니 다.
public void write(char cbuf[], int off, int len) throws IOException {
se.write(cbuf, off, len);
}
3)문자열 의 일 부 를 스 트림 에 기록 합 니 다:본질은 StreamEncoder 의 write(String str,int off,int len)방법 을 호출 하 는 것 입 니 다.
public void write(String str, int off, int len) throws IOException {
se.write(str, off, len);
}
4)새로 고침 흐름 의 데이터:본질은 StreamEncoder 를 호출 하 는 flush()방법 입 니 다.
public void flush() throws IOException {
se.flush();
}
5)흐름 을 닫 지만 흐름 을 새로 고침 합 니 다.즉,이 흐름 은 flush 방법 을 먼저 호출 한 다음 에 close 방법 을 사용 해 야 합 니 다.
public void close() throws IOException {
se.close();
}
6)OutputStreamWriter 흐름 의 API 와 구조 방법 은 본질 적 으로 모두 StreamEncoder 흐름 을 호출 하 는 방법 이기 때문에 OutputStreamWriter 흐름 의 구체 적 인 실현 은 StreamEncoder 흐름 소스 코드 를 봐 야 알 수 있다.JAVA OutputStreamWriter 흐름 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JAVA OutputStreamWriter 흐름 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.