zoukankan      html  css  js  c++  java
  • java输入流详解

    java输入流详解

    java中提供了很多中输入流对象, 如FileInputStream, BufferedInputStream, InputStreamReader, BufferedReader.很多初学者会被绕的晕头转向.

    其实核心用来读取数据的就是FileInputStream, 其他的都是java对FileInputStream的封装, 体现的是装饰者设计思想.

    FileInputStream

    FileInputStream 字节流: 是真正读取数据的对象, 在读取是只能通过一个字节一个字节的读取, 读取后也会一个字节一个字节的打印在控制台.

    image-20210311122852306

    BufferedInputStream

    FileInputStream读取一个字节就打印一个字节, 频繁操作, 资源消耗比较大, 于是有了BufferedInputStream,.

    BufferedInputStream (字节缓冲流): 任然是一个一个读取字节, 但是会等缓冲区达到限额后一次性输出在控制台. 减少频繁打印的操作.

    InputStream in = new BufferedInputStream(new FileInputStream("path"));
    int i = -1;
    while ( (i = in.read()) != -1 ) {
        println(i);
    }
    

    image-20210311124231623

    InputStreamReader

    无论是InputStream还是BufferedInputStream都是以字节为读取单位的, 很多时候我们读取的内容需要以字符呈现, 以便我们读懂. 所以有InputStreamReader

    InputStreamReader (字符流): 一个一个字节的读取字节, 等到凑够一个字符后, 在进行打印输出.

    因为不同编码的一个字符对应不同个数的字节, 所以需要指定好编码规则

    InputStream in = new InputStreamReader(new FileInputStream("path"), "UTF-8")
    String s = null
    while ( (s = in.readLine()) != null ) {
        System.out.println(i);
    }
    

    image-20210311125121743

    BufferedReaders

    InputStreamReader已字符形式打印出来, 但是也是一个字符一个字符打印, 当我们需要以行读取打印是, 需要继续做一层包装

    BufferedReader(字符缓冲流): 一个字节一个字节的读取, 但是会经过字符流转为字符, 并且在缓冲区中进行缓存, 等满足一定限额后,一行一行的进行打印.

    Reader in = new BufferedReader(
        new InputStreamReader(
             new FileInputStream("path"),
             "UTF-8"
        )
    );
    String s = null;
    while ( (s = in.readLine()) != null ) {
        System.out.println(i);
    }
    

    image-20210311125949936

    衣带渐宽终不悔,为伊消得人憔悴!
  • 相关阅读:
    UOS ROOT如何SSH登陆
    UOS打印日志提示Can’t create temporary file,无法打印如何处理
    UOS简易OEM ISO镜像的步骤(UOS如何自行定制镜像文件)
    UOS火狐浏览器如何下载并安装Adobe Flash Player插件【AMD】
    UOS如何录制屏幕视频
    UOS怎么进入到单用户模式
    UOS免密访问windows共享文件夹
    UOS命令行服务器离线授权码激活步骤
    UOS怎么安装搜狗拼音输入法【x86】
    UOS如何安装RTX客户端-更新版(X86)
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/14517240.html
Copyright © 2011-2022 走看看