Reader와 InputStream의 차이점은 무엇입니까?
Reader와 InputStream의 차이점은 무엇입니까?어떤 용도로 사용합니까?문자를 읽을 때 Reader를 사용할 수 있는 경우 입력 스트림을 사용하는 이유는 객체를 읽는 것입니까?
InputStream은 리소스에서 정보를 가져오는 원시 방법입니다.변환하지 않고 바이트 단위로 데이터를 가져옵니다.이미지 데이터 또는 이진 파일을 읽는 경우 사용할 스트림입니다.
판독기는 문자 스트림용으로 설계되었습니다.읽고 있는 정보가 모두 텍스트인 경우, 판독기가 문자 디코딩을 처리하고 원시 입력 스트림에서 유니코드 문자를 제공합니다.어떤 유형의 텍스트를 읽고 있는 경우 사용할 스트림입니다.
InputStreamReader 클래스를 사용하여 InputStream을 랩하여 Reader로 변환할 수 있습니다.
Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
InputStreams는 스트림에서 바이트를 읽기 위해 사용됩니다.따라서 이미지, 비디오 및 직렬화된 개체와 같은 이진 데이터에 유용합니다.
반면 리더는 문자 스트림이기 때문에 문자 데이터를 읽는 데 가장 적합합니다.
내 생각에 혼란의 근원은 저기에 있는 것이int또한 반환한다.int.
다른 점은 말이다.InputStream.read()바이트 스트림의 원시 내용에 해당하는 0에서 255 사이의 바이트 값을 반환합니다.Reader.read()0 ~ 65357 의 문자값을 반환합니다(65358 개의 Unicode 코드 포인트가 다르기 때문에).
안InputStream예를 들어 콘텐츠 "a bya"는 3자이지만 UTF-8에서는 5바이트로 인코딩되어 있습니다.따라서,Inputstream5바이트의 스트림으로 읽을 수 있습니다(각각의 스트림은int0 ~ 255)의 결과,97,226,128,161그리고.97어디에
a -> U+0061 -> 0x61 (hex) -> 97 (dec)
‡ -> U+2021 -> 0xE280A1 (utf-8 encoding of 0x2021) -> 226 128 161 (1 int per byte)
a -> U+0061 -> 0x61 (hex) -> 97 (dec)
A Reader내용을 한 글자씩 읽을 수 있으므로 내용 "aaa"를 3자로 읽을 수 있습니다.97,8225그리고.97어디에
a -> U+0061 -> 0x61 -> 97
‡ -> U+2021 -> 0x2021 -> 8225 (single int, not 3)
a -> U+0061 -> 0x61 -> 97
문자 '는 Unicode에서 U+2021이라고 불립니다.
하나는 바이트를 받아들이고 다른 하나는 문자를 받아들입니다.
InputStream accept byte "Reader accept character, Java 에서는 1 문자 = 2 bytes, Reader use buffer, InputStream not use.디스크에 저장되거나 바이트에 기반한 모든 파일 전송은 이미지와 비디오를 포함하지만, 문자는 메모리에 있기 때문에 InputStream이 자주 사용됩니다.
언급URL : https://stackoverflow.com/questions/4367539/what-is-the-difference-between-reader-and-inputstream
'programing' 카테고리의 다른 글
| 클리어하기 위한 리모트 접속DB heroku 데이터베이스 (0) | 2022.10.31 |
|---|---|
| javascript를 사용하여 정규 표현 특수 문자를 피하는 방법 (0) | 2022.10.31 |
| SSH 터널을 통한 DBeaver 연결 (0) | 2022.10.31 |
| MariaDB Column Store를 Django(Django-ORM)와 함께 사용할 수 있습니까? (0) | 2022.10.31 |
| 배치 정규화 및 폐기 순서 (0) | 2022.10.31 |