• JavaIO系列——BufferedReader,BufferedWriter,PrintWriter,转换流


    BufferedReader,

    从字符输入流中读取文本,缓冲字符以便 提供字符、数组和行的有效读取。

    可以指定缓冲区大小,也可以使用默认大小。 这 默认值对于大多数用途来说足够大

    构造

    在这里插入图片描述

    方法

    特别的我们多了readLine方法可以读一整行
    在这里插入图片描述

    示例

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class demo11 {
        public static void main(String[] args) throws IOException {
            String path = "C:\\Users\\Syf200208161018\\Desktop\\新建文本文档.txt";
            BufferedReader reader = new BufferedReader(new FileReader(path));
            String line = null;
            while ((line= reader.readLine())!=null){
                System.out.println(line);
            }
            reader.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    BufferedWriter

    将文本写入字符输出流,缓冲字符以便 提供单个字符、数组和字符串的高效写入。

    可以指定缓冲区大小,也可以接受默认大小。 对于大多数用途,默认值足够大。

    提供了一个 newLine() 方法,它使用平台自己的概念 由系统属性定义的行分隔符 line.separator. 并非所有平台都使用换行符 (‘\n’) 来终止行。 因此,最好调用此方法来终止每个输出行 直接写一个换行符。

    构造

    在这里插入图片描述

    方法

    在这里插入图片描述

    示例

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class demo12 {
        public static void main(String[] args) throws IOException {
            String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(path));
            bufferedWriter.write("撒旦卡啥的adsadhsahdkk");
            bufferedWriter.newLine();
            bufferedWriter.write("565446464");
            bufferedWriter.flush();
            bufferedWriter.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    PrintWriter

    封装了print()和println()方法

    将对象的格式化表示打印到文本输出流。 这个 类实现了所有 print中发现的方法 PrintStream. 它不包含写入原始字节的方法,其中 程序应该使用未编码的字节流。

    不像 PrintStream类,如果启用了自动刷新 只有当其中一个 println, printf, 或者 format方法被调用,而不是每当换行符 恰好是输出。 这些方法使用平台自己的线概念 分隔符而不是换行符。

    此类中的方法从不抛出 I/O 异常,尽管它的一些 构造函数可能。 客户可以询问是否有任何错误 通过调用发生 checkError().

    此类始终将格式错误且无法映射的字符序列替换为 字符集的默认替换字符串。 CharsetEncoder 使用 类应该在更多时 需要对编码过程进行控制

    构造

    在这里插入图片描述

    方法

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    示例

    import entity.Stu;
    
    import java.io.FileNotFoundException;
    import java.io.PrintWriter;
    
    public class demo13 {
        public static void main(String[] args) throws FileNotFoundException {
            String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
            Stu stu = new Stu("zhansgan",55,102.31);
            PrintWriter printWriter = new PrintWriter(path);
            printWriter.println(209.31);
            printWriter.println("helloword");
            printWriter.write("new");
            printWriter.print(2012);
            printWriter.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    转换流(重点)

    可将字节流转换为字符流!!!
    可以设置字符编码的方式!!!

    InputStreamReader

    InputStreamReader 是从字节流到字符流的桥梁:它 读取字节并使用指定的字符将它们解码为字符 charset. 它使用的字符集 可以通过名称指定,也可以明确给出,或者平台的 可以接受默认字符集。

    每次调用 InputStreamReader 的 read() 方法之一可能 导致从底层字节输入流中读取一个或多个字节。 为了能够有效地将字节转换为字符,可以使用更多字节 从底层流中提前读取,而不是满足 当前读取操作。

    为了获得最高效率,请考虑将 InputStreamReader 包装在 缓冲阅读器

    构造

    在这里插入图片描述

    方法

    在这里插入图片描述

    示例

    import java.io.*;
    
    public class demo14 {
        public static void main(String[] args) throws IOException {
            String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
            InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(path), "UTF-8");
            int count = 0;
            while ((count= inputStreamReader.read())!=-1){
                System.out.print((char) count);
            }
            inputStreamReader.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    OutputStreamWriter

    OutputStreamWriter 是从字符流到字节流的桥梁: 写入它的字符使用指定的字节编码为 charset. 它使用的字符集 可以通过名称指定,也可以明确给出,或者平台的 可以接受默认字符集。

    每次调用 write() 方法都会导致编码转换器 在给定的字符上调用。 结果字节累积在一个 写入底层输出流之前的缓冲区。 请注意, 传递给 write() 方法的字符不会被缓冲。

    为了获得最高效率,请考虑将 OutputStreamWriter 包装在 BufferedWriter 以避免频繁的转换器调用。

    构造

    在这里插入图片描述

    方法

    在这里插入图片描述

    示例

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    
    public class demo15 {
        public static void main(String[] args) throws IOException {
            String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");
    
            outputStreamWriter.write("hello world !!! 你好世界");
    
            outputStreamWriter.flush();
            outputStreamWriter.close();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    万用表数据导出变化曲线图——pycharm实现视频数据导出变化曲线图
    矩阵的转置c++
    赛宁网安分靶场全力支持第三届“鹏城杯”攻防演练
    学习笔记-FRIDA脚本系列(一)
    OpenCV+YOLO+IP摄像头实现目标检测
    特殊SQL的执行(模糊查询、批量删除、动态设置表名、添加功能获取自增的主键)
    Qt自定义QSlider(支持水平垂直)
    Mongodb操作GridFS案例
    Linux安装Redis
    【STM32】MCU HardFault异常处理分析流程及总结(一)
  • 原文地址:https://blog.csdn.net/qq_51553982/article/details/125418661