Java重点 | IO流中的缓冲流专属和转换流专属

简介: 经过上篇文章,我们已经学会了IO流中的文件专属流,那么我们继续学习,本文将详细介绍缓冲流专属和转换流专属的配合使用。主要是从下面两个方面讲解,BufferedReader读,和InputStreamReader转换流联合使用,和BufferedWriter写,和OutputStreamWriter转换流联合使用。那么让我们来一起学习吧。

缓冲流专属和转换流

BufferedReader读,和InputStreamReader转换流联合使用

**BufferedReader:
带有缓冲区的字符输入流。
使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲。**

BufferedReader的括号里面要求传的是Reader(字符输入流),如果要传字节输入流,就要使用转换流(InputStreamReader),使字节输入流转成字符输入流。

public class BufferedReader读_加转换流 {
    public static void main(String[] args) {
        BufferedReader br= null;
        FileReader fr = null;
        FileInputStream fis = null;
        InputStreamReader isr = null;
        try {
            /* 这里面演示的是BufferedReader传入一个Reader
            这个构造方法里面只能传入Reader类型的,如果要传入字节输入流,就要用转换流转换
            fr = new FileReader("D:\\AJava\\新建文件夹\\aaa");
            br = new BufferedReader(fr);*/

            //这个构造方法里面只能传入字符输入流类型。传入字节输入流要使用转换流,把字节输入流转换成字符入出流
            //演示传入字节输入流 用转换流
            //创建字节输入流对象
            fis = new FileInputStream("aa");
            //创建转换流对象(字节输入转换成字符输入)
            isr= new InputStreamReader(fis);
            //创建BufferdReader对象
            br = new BufferedReader(isr);
            /*上面的合并在一起写 也就不用上面的赋值null了
            //当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
            br = new BufferedReader(new InputStreamReader(new FileInputStream("aa")));*/

            //readLine()读取一行内容,当读到末尾没有内容的时候,返回null
            String aa =null;
            while ((aa = br.readLine())!=null){
                System.out.println(aa);
            }
            /*String s = br.readLine();
            System.out.println(s);读一行内容*/

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fr != null) {
                try {
                    br.close(); //对于包装流来说,只需要关闭最外层的流就行,里面的节点会自动关闭。
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
    

BufferedWriter写,和OutputStreamWriter转换流联合使用

**BufferedWriter :带有缓冲的字符输出流。
OutputStreamWriter:转换流。**

BufferedWriter 括号里面要求传的是writer(字符输出流),如果要传字节输出流,就要使用转换流(OutputStreaWriter),使字节输出流转换成字符输出流。

public class BufferedWriter写_加转换流 {
    public static void main(String[] args) {
        BufferedWriter bw  =null;
        try {
            /*传入字符writer类型的输出流
            bw = new BufferedWriter(new FileWriter("aa",true));*/

            //里面只能传入字符输出流类型。传入字节输出流要使用转换流,把字节输出流转换成字符输出流
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("JAVAse进阶/src/IO流/aa",true)));

            bw.write("我是一个大帅哥");
            bw.write("\n");
            bw.write("你好大帅哥");
            //刷新
            bw.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bw != null) {
                try {
                    bw.close(); //关闭最外层
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
相关文章
|
30天前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
5天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
15天前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
29天前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
25 2
|
30天前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
26天前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
|
2月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
30天前
|
缓存 Java
【IO面试题 一】、介绍一下Java中的IO流
Java中的IO流是对数据输入输出操作的抽象,分为输入流和输出流,字节流和字符流,节点流和处理流,提供了多种类支持不同数据源和操作,如文件流、数组流、管道流、字符串流、缓冲流、转换流、对象流、打印流、推回输入流和数据流等。
【IO面试题 一】、介绍一下Java中的IO流
|
2月前
|
存储 缓存 Java
Java零基础入门之IO流详解(二)
Java零基础入门之IO流详解(二)
|
2月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用