首页 > 编程语言 > 详细

java输入流详解

时间:2021-03-11 17:20:33      阅读:15      评论:0      收藏:0      [点我收藏+]

java输入流详解

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

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

FileInputStream

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

技术分享图片

BufferedInputStream

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

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

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

技术分享图片

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);
}

技术分享图片

BufferedReader

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);
}

技术分享图片

java输入流详解

原文:https://www.cnblogs.com/ryxiong-blog/p/14517240.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!