0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

几种常用Reader输入流的使用方式

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-10 15:46 次阅读

上次聊到了 java 的字节流 InputStream,今天来看看它的好朋友 Reader 字符流。

Reader

java 中的 IO 输入流不是只有 InputStream 还有按字符输入的 Reader。

InputStreamReader
字节流,以 byte 为单位字符流,以 char 为单位
读取字节(-1,0~255):int read()读取字符(-1,0~65535):int read()
读到字节数组:int read(byte[] b)读到字符数组:int read(char[] c)

和 InputStream 一样,Reader 也是所有字符输入流的超类。主要的方法是:public int read() throws IOException,read() 读取字符流中的下一个字符,返回 0-65535 的 int 类型数值, 返回 -1 表示已经读取结束。

FileReader

FileReader 打开一个文件并获取到文件的字符流。FileReader 用于读取文件中的内容。

private void fileReaderDemo() throws Exception {
    Reader reader = new FileReader("D:
eaderDemo.txt");
    int n;
    while ((n = reader.read()) != -1) {
        System.out.print((char)n);
    }
    reader.close();
}

Reader 实现了 Closeable 接口,可以用 try(Reader reader = new FileReader("D: eaderDemo.txt")) {} 的方式关闭掉资源。

InputStreamReader

InputStreamReader 就是将 InputStream 读取的字节流装换为 Reader 的字符流。可以把任意的 InputStream 转换为 Reader,FileReader 就继承自 InputStreamReader。在创建 InputStreamReader 实例对象的时候可以指定字符集,以防止乱码。

private void inputStreamReaderDemo() throws Exception {
    InputStream inputStream = new FileInputStream("D:
eaderDemo.txt");
    try(Reader reader = new InputStreamReader(inputStream, "utf-8")) {
        int n;
        while ((n = reader.read()) != -1) {
            System.out.print((char)n);
        }
    }
}

StringReader 和 CharArrayReader

FileReader 是将文件作为一个读取源,StringReader 将 string 字符串作为一个读取源。

private void stringReaderDemo() throws Exception {
    try(Reader reader =  new StringReader("这是测试代码")) {
        char[] buffer = new char[1024];
        while ((reader.read(buffer)) != -1) {
            System.out.print(buffer);
        }
    }
}

reader.read(char[] buffer) 是 reader 读取字符流的重载方法,将内容不在是一个 char 一个 char 的输出,而是将内容读取到缓冲区 buffer 后一次性输出。

CharArrayReader 和 StringReader 几乎一样,调用方法变成了 try(Reader reader = new CharArrayReader("这是测试代码".toCharArray()))

BufferedReader

提供通用的缓冲方式读取文本并且提供了 readLine() 读取了一个文本行。从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

private void bufferedReaderDemo() throws Exception {
    try(BufferedReader reader =  new BufferedReader(new FileReader("D:
eaderDemo.txt"))) {
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
}

总结

介绍了几种常用 Reader 输入流的使用方式。FileReader 用于文件读取,BufferedReader 自带缓冲区读取效率高,StringReader 和 CharArrayReader 可以读取字符串源,InputStreamReader 将 InputStream 转为 Reader。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148512
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • 字符
    +关注

    关注

    0

    文章

    229

    浏览量

    24889
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66800
  • reader
    +关注

    关注

    0

    文章

    7

    浏览量

    8669
收藏 人收藏

    评论

    相关推荐

    几种常用单片机之间的通信方式

    几种常用单片机之间的通信方式利用铁电存储器作为数据缓冲器的通信方式
    发表于 03-17 07:45

    请问八层板常用的叠层方式有哪几种

    八层板常用的叠层方式有哪几种
    发表于 04-25 07:16

    单片机常用的通信方式有哪几种

    几种常用单片机之间的通信方式利用铁电存储器作为数据缓冲器的通信方式
    发表于 05-27 06:45

    电流互感器常用的接线方式有哪几种

    电流继电器的动作电流是什么意思?电流互感器常用的接线方式有哪几种
    发表于 09-27 09:12

    几种常用单片机之间的通信方式

    几种常用单片机之间的通信方式①采用硬件UART进行异步串行通信。这是一种占用口线少,有效、可靠的通信方式;但遗憾的是许多小型单片机没有硬件UART,有些也只有1个UART,如果系统还要
    发表于 11-25 07:14

    stm32串口输出的常用方式有哪几种

    如何使用printf语句通过串口输出我们想要的参数值?stm32串口输出的常用方式有哪几种
    发表于 12-06 07:33

    几种常用的IO输入输出方式是什么?

    几种常用的IO输入输出方式是什么?
    发表于 12-21 07:06

    AutoCAD中输入Φ的的常用方法

    AutoCAD中输入Φ的的常用方法 总结了一下,在AutoCAD中Φ的的常用输入法大致有以下几种:方法1、%%C 方法2、鼠标右击——符
    发表于 11-08 10:24 1103次阅读

    通信开关电源整流器几种常用散热方式

    本文介绍通信开关电源冷却技术的设计对通信机房环境和温度变化的适应性要求,并给出目前整流器常用几种冷却方式及其分析比较。
    发表于 01-04 15:12 957次阅读

    Foxit Reader

    福昕PDF阅读器(Foxit reader)是一个小巧的PDF文档阅读器,有了福昕pdf,你无须为仅仅阅读PDF文档而下载和安装庞大的Adobe Reader,而且启动快速,对中文支持非常好。
    发表于 11-12 18:15 2次下载

    常用单片机通信方式综述

    几种常用单片机之间的通信方式
    的头像 发表于 08-06 11:56 4728次阅读

    常用几种无线网络组网方式介绍

    无线网络系统在我们弱电项目中经常用到,每个项目对于无线网络的需求不一样的,也就是不同的项目不同的应用场景,今天分享一下常用几种无线网络组网方式
    的头像 发表于 11-15 09:45 1.1w次阅读

    C++的输入流和输出流介绍

    C++的输入流和输出流是C++标准库中的两个重要的流类,分别用于输入和输出数据。在本篇博客中,我们将详细介绍C++的输入流和输出流,包括流的概念、流的类型、流的操作和流的应用等方面。
    的头像 发表于 04-30 17:58 1423次阅读

    西门子PLC常用几种加密方式

    【导读】分享西门子PLC常用几种加密方式,看看你喜欢哪一种?
    的头像 发表于 07-13 09:32 849次阅读
    西门子PLC<b class='flag-5'>常用</b>的<b class='flag-5'>几种</b>加密<b class='flag-5'>方式</b>

    PLC模拟量的信号输入流

    从以上PLC模拟量的信号输入流程可以看到,在自动化过程控制系统中,模拟量信号的输入是非常复杂的。但是,在现目前的工业现场,对模拟量信号的处理已基本都采用电流信号方式进行传输,相比于电压信号方式
    发表于 07-31 17:11 1次下载