InputStream,InputStreamReader和Reader之间的区别与关系

 

inputstreamreader

InputStream:得到的是字节输入流,InputStream.read(“filename”)之后,得到字节流

Reader:读取的是字符流

inputstreamreader:从字节到字符的桥梁

InputStreamReader(InputStream.read(“filename”));

reader.read(InputStreamReader(InputStream in));便可从字节变为字符,打印显示了。

java.io.Reader 和 java.io.InputStream 组成了Java 输入类。

Reader 用于读入16位字符,也就是unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据

Reader支持16位的Unicode字符输出,

InputStream支持8位的字符输出。

Reader和InputStream分别是I/O库提供的两套平行独立的等级机构,

1byte = 8bits

InputStream、outputstream是用来处理8位元的流,

Reader、Writer是用来处理16位元的流。

而在JAVA语言中,byte类型是8位的,char类型是16位的,所以在处理中文的时候需要用Reader和Writer。

值得说明的是,在这两种等级机构下,还有一道桥梁

InputStreamReader、outputstreamwriter负责进行InputStream到Reader的适配和由OutputStream到Writer的适配。

在 Java中,有不同类型的 Reader 输入流对应于不同的数据源:

FileReader 用于从文件输入; CharArrayReader 用于从程序中的字符数组输入; StringReader 用于从程序中的字符串输入; PipedReader 用于读取从另一个线程中的 PipedWriter 写入管道的数据。

相应的也有不同类型的 InputStream 输入流对应于不同的数据源:fileinputstream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。

另外,还有两种没有对应 Reader 类型的 InputStream 输入流: socket 用于套接字; URLConnection 用于 URL 连接。 这两个类使用 getInputStream() 来读取数据。

相应的,java.io.Writer 和 java.io.OutputStream 也有类似的区别。

相关阅读

淘宝特价版怎么运营?与淘宝有什么区别?

淘宝有推出一款app,叫淘宝特价版,走的就是低价路线,商品涵盖生活方方面面,不知道您有没有注意过,那淘宝特价版怎么运营?与淘宝有什么区

String.equals()与String.equalsIgnoreCase( )区别

**String.equals()对大小写敏感! String.equalsIgnoreCase( )则忽略大小写** public static void main(String[] args) {

简单讲下postInvalidate和Invalidate的区别

invalidate 这里我们从源码中去简单扒一下View的invalidate()的方法: 1    /** 2     * Invalidate the whole v

淘宝信用贷款和网商贷之间有什么区别?

现在,各大银行的信用贷款产品越来越多,网商银行也不例外。很多朋友一直都搞不清淘宝信用贷款和网商贷的区别。小编今天就为大家介绍

C#——读文件方法(Filestream、File、StreamReader)

方法一:使用Filestream,将文本一次性全部转换为字节,之后转换为string显示在text中OpenFileDialog fd = new OpenFileDialog();

发表评论