美文网首页
2020_05_10Java学习记录-InputStream

2020_05_10Java学习记录-InputStream

作者: Code_Blog | 来源:发表于2020-05-12 10:00 被阅读0次

    InputStream InputStreamReader Reader

    由于这只是一个程序新手的学习记录,如果有错误敬请指出!!!


    在5月6号的Java课中,老师讲到了以上三个方法,并要求我们对其自行进行进一步详细的了解与学习.


    问题1: Reader和InputStreamReader之间的关系

    在浏览了一定资料后,我也对这两个方法有了一定的了解

    Reader:读取的是字符流

    InputStreamReader相当于一个字节到字符的转换器,将输入的字节流转换为字符

    Reader是各种输入流的父类,且用来处理16位元的流(也就是Unicode编码的字符),所以在处理中文的时候,可以使用Reader

    InputStreamReader在我使用程序进行几次尝试之后,明白这个方法只是一个格式的"转换器",将本来为字节的输入流转换为16位字符,同时我产生了一种想法,如果使用InputStreamReader处理非字节单位输入的输入流会发生什么?(但是我不知道如何生成一个非字节的输入流)

    所以先暂时在这里留下我的猜想:

    一.假如可以运行

    1.在输入流单位大于8时,方法可能只是会读取每个单位的前八位,然后将他们转换成16位的字符(也就是会导致数据缺失

    2.在输入流单位小于8时,会自动对每个单位进行补足然后再转换成字符.

    二.假如不可运行

    1.程序报错,产生IO异常


    问题2:InputStream 、 InputStreamReader和BufferedReader三者的差异性

    InputStreamReader在问题一中的描述也已经是目前为止我对他的全部了解了.

    InputStream是所有字节输入流的超类,平时我们肯定是使用到他的子类,比如FileInputStream

    而存在输入(Input),肯定对应的存在输出(Output),将上述类中的Input换成Output就为相应的输出流概念.

    BufferedReader相比于InputStream多了一个缓冲方式文本读取,相比于InpoutStream一个byte一个byte的读取数据更为的高效.

    问题3:FileInputStream代表什么含义

    FileInputStream我自作主张的翻译它为"文件输入流",从他的构造上就可以看出,这是一个InputStream的子类,继承自InputStream,用于读取本地文件中的字节数据,由于我的Java环境是在Windows上的,而Windows上的文件都是以字节为单位的,因此它适用于操作任何形式的文件.

    而FileInputStream存在最重要的两个方法Read()和Read(byte[] b)

    这两个方法简单的介绍:

    Read():每调用一次Read()方法,都从目标文件中继续读取1字节的数据当取至文件末尾时,则返回-1.

    而Read(byte[] b)则是可以自定义单次读取的字节数进行读取,相较于Read()多了一个缓冲的技术并且允许读取非8位的字符,也就是可以根据目标文件的字符规格选择读取的长度.

    相关文章

      网友评论

          本文标题:2020_05_10Java学习记录-InputStream

          本文链接:https://www.haomeiwen.com/subject/yqivnhtx.html