Java字节流与字符流联系和不同,以及输入流和输出流
2018-03-17 14:16
232 查看
所谓的流,就像水流一样,是承载着字节和字符序列的的一个数据水流;输入流:是数据内容从文件流向内存;输出流:从内存流向文件
java.io包中,包含所有流式I/O所需要的类, 在java.io包中, 处于java.io包最顶层的是java.io.InputStream :字节输入流, java.io.OutputStream:字节输出流。这两个类均为抽象类,也就是说它们不能被实例化,必须生成子类之后才能实现一定功能。
Java中的字符流处理的最基本的单元是Unicode码元(大小2字节),它通常用来处理文本数据。
1.Java的字节流
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
2.Java的字符流
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
而以上四者InputStream,OutputStream,Reader,writer都是抽象类,所以不能直接new ;
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的,但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的Encode来处理,也就是要进行字符集的转化。这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联。
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的。
3.二者转化: 1/在从字节流转化为字符流时,实际上就是byte[]转化为String时, public String(byte bytes[], String charsetName) 2/而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[] String.getBytes(String charsetName)
4.各种子类衍生图
![](//img-blog.csdn.net/20180317141041837?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3ExOTkzNjk0MzYw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](//img-blog.csdn.net/20180317141109389?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3ExOTkzNjk0MzYw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](//img-blog.csdn.net/20180317141119149?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3ExOTkzNjk0MzYw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
java.io包中,包含所有流式I/O所需要的类, 在java.io包中, 处于java.io包最顶层的是java.io.InputStream :字节输入流, java.io.OutputStream:字节输出流。这两个类均为抽象类,也就是说它们不能被实例化,必须生成子类之后才能实现一定功能。
字节流和字符流;
Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据;Java中的字符流处理的最基本的单元是Unicode码元(大小2字节),它通常用来处理文本数据。
1.Java的字节流
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
2.Java的字符流
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
而以上四者InputStream,OutputStream,Reader,writer都是抽象类,所以不能直接new ;
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的,但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的Encode来处理,也就是要进行字符集的转化。这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联。
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的。
3.二者转化: 1/在从字节流转化为字符流时,实际上就是byte[]转化为String时, public String(byte bytes[], String charsetName) 2/而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[] String.getBytes(String charsetName)
4.各种子类衍生图
相关文章推荐
- 关于JAVA字节输入流与输出流以及与字符区别
- cmd编译 .java :编码GBK的不可映射字符以及输出乱码 原因以及解决方法
- Java 字节流与字符流(字节输入流:InputStream)
- JAVA输入/输出流程序例题(文件和目录、字节流、字符流)
- Java基础——IO(拷贝文件+字节流-字符流缓冲区(装饰设计)-转换流-IO操作规律-异常日志-系统信息列表输出)
- Java IO流原理之常用字节流和字符流详解以及Buffered高效的原理
- java中println与print的区别,以及print字符输出
- java: InputStreamReader将字节的输入流变成字符的输入流,OutputStreamWriter将字符的输出流变成字节的输出流
- java.io 序列化 总结Serializable 和 Externalizable 的区别与联系,以及输出后的乱码问题
- 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader
- java之字符流与字节流的区别和联系
- Java 字节流与字符流(字符输入流:Reader)
- Java中 IO中的字符输入流与字符输出流
- 对java中的输入/输出的总结(字节流,字符流)
- 黑马程序员_Java基础_IO流(字符流缓冲区和字节流相关操作以及相关操作技巧)
- 【转】JAVA输出内容打印到TXT以及不同系统中如何换行
- JAVA输入/输出流程序例题(文件和目录、字节流、字符流)
- 关于java之socket输入流输出流可否放在不同的线程里进行处理
- Java中输入字符的排列以及按从小到大的顺序输出
- Java中字符流和字节流的区别以及主要的I/O体系