InputStream、InputStreamReader、BufferedReader用法区别

冷不防 2021-11-09 11:31 375阅读 0赞

今天回顾总结了一下,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

    1. public void inputStreamTest() throws IOException {
    2. FileInputStream fileInputStream = new FileInputStream("F:\\idea-Java\\feifei\\test.txt");
    3. // 字节流读取
    4. byte[] bytes = new byte[1024];
    5. int len;
    6. // 读取文件内容到bytes数组中,一次读取可以容纳1024个字节
    7. while ((len = fileInputStream.read(bytes)) != -1) {
    8. // 从0开始截取字节数组的len长度的字节
    9. System.out.println(new String(bytes, 0, len, "UTF-8"));
    10. }
    11. fileInputStream.close();
    12. }
  2. 字符流读取

    @Test

    1. public void inputStreamReadTest() throws IOException {
    2. FileInputStream fileInputStream = new FileInputStream("F:\\idea-Java\\Alibaba\\test.txt");
    3. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
    4. int len;
    5. // 字符流读取文件内容,默认一个字符一个字符的读
    6. while ((len = inputStreamReader.read()) != -1) {
    7. // 从0开始截取字节数组的len长度的字节
    8. System.out.println((char) len);
    9. }
    10. fileInputStream.close();
    11. inputStreamReader.close();
    12. }

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

  1. 自带缓冲区的字符流,按行读取

    @Test

    1. public void bufferedReadTest() throws IOException {
    2. FileInputStream fileInputStream = new FileInputStream("F:\\idea-Java\\Alibaba\\test.txt");
    3. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
    4. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    5. String len;
    6. // 字符缓冲流流读取文件内容,通常使用的是一行一行的读
    7. while ((len = bufferedReader.readLine()) != null) {
    8. // 从0开始截取字节数组的len长度的字节
    9. System.out.println(len);
    10. }
    11. fileInputStream.close();
    12. inputStreamReader.close();
    13. bufferedReader.close();
    14. }

发表评论

表情:
评论列表 (有 0 条评论,375人围观)

还没有评论,来说两句吧...

相关阅读