InputStream、InputStreamReader、BufferedReader用法区别

今天回顾总结了一下,Java IO里面的InputStream、InputStreamReader、BufferedReader用法区别

  1. 字节流
    InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等
    OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等
  2. 字符流
    Reader 是字符输入流的所有类的超类,Writer 是字符输出流的所有类的超类
    InputStreamReaderOutputStreamWriter是子类,是字节流通向字符流的桥梁,它将字节流转换为字符流
    还有一个类FileReader继承自InputStreamReader ,可以通过传入一个文件名快速构建字符流
  3. 缓冲流
    BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,
    从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取
    BufferedWriter 由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,
    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入

自己写的实例操作代码

  1. 字节流读取
	@Test
    public void inputStreamTest() throws IOException {
        FileInputStream fileInputStream = new FileInputStream("F:\\idea-Java\\feifei\\test.txt");
        // 字节流读取
        byte[] bytes = new byte[1024];
        int len;
        // 读取文件内容到bytes数组中,一次读取可以容纳1024个字节
        while ((len = fileInputStream.read(bytes)) != -1) {
            // 从0开始截取字节数组的len长度的字节
            System.out.println(new String(bytes, 0, len, "UTF-8"));
        }
        fileInputStream.close();
    }
  1. 字符流读取
	@Test
    public void inputStreamReadTest() throws IOException {
        FileInputStream fileInputStream = new FileInputStream("F:\\idea-Java\\Alibaba\\test.txt");
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
        int len;
        // 字符流读取文件内容,默认一个字符一个字符的读
        while ((len = inputStreamReader.read()) != -1) {
            // 从0开始截取字节数组的len长度的字节
            System.out.println((char) len);
        }
        fileInputStream.close();
        inputStreamReader.close();
    }

也可以多个多个字符读取,跟字节流类似,定义一个char数组

  1. 自带缓冲区的字符流,按行读取
	@Test
    public void bufferedReadTest() throws IOException {
        FileInputStream fileInputStream = new FileInputStream("F:\\idea-Java\\Alibaba\\test.txt");
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        String len;
        // 字符缓冲流流读取文件内容,通常使用的是一行一行的读
        while ((len = bufferedReader.readLine()) != null) {
            // 从0开始截取字节数组的len长度的字节
            System.out.println(len);
        }
        fileInputStream.close();
        inputStreamReader.close();
        bufferedReader.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值