您的位置:首页 > 编程语言 > Java开发

Java字节流与字符流联系和不同,以及输入流和输出流

2018-03-17 14:16 232 查看
所谓的流,就像水流一样,是承载着字节和字符序列的的一个数据水流;输入流:是数据内容从文件流向内存;输出流:从内存流向文件
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 字符流字节流
相关文章推荐