【Java 入门 Day25】 IO 流下篇:字符流 + 桥转换流 + File 工具类,解决文本乱码 文件管理难题

发布时间:2026/6/16 6:51:22

【Java 入门 Day25】 IO 流下篇:字符流 + 桥转换流 + File 工具类,解决文本乱码  文件管理难题 家人们上篇啃完万能字节流今天专攻文本专用字符流、编码乱码解决方案、桥转换流还有单独管理文件本体的 File 类写日志、读取 txt、遍历文件夹全靠这套一、字符编码乱码元凶全在这所有文字传输本质是字符转二进制编码、二进制转回文字解码编码解码格式不一样直接全是问号乱码。 主流编码简单科普ISO8859-1西欧英文单字节不支持中文GBK/GB2312/GB18030中文编码GB2312 仅 6000 常用汉字GBK 兼容两万汉字Big5繁体中文UTF-8万国通用编码英文 1 字节、汉字 2~3 字节项目标准编码二、字符流顶层父类抽象类只操作纯文本Reader字符输入流读 txt 文本Writer字符输出流写 txt、java、html 文本三、字符节点流FileReader / FileWriter对标字节 File 流只处理文本文件FileWriter 文件字符输出流构造路径写法和 FileOutputStream 完全一致支持追加 / 覆盖。 三个 write 方法write(int n)单个字符写入write(String str)直接整段字符串写入比字节流省事百倍write(char[] cs)字符数组批量写入FileReader 文件字符输入流两个 read 方法read()读取单个字符末尾返回 - 1read(char[] cs)批量读取字符进数组返回读取长度四、字符过滤流文本开发神器1. BufferedReader 缓冲字符读流王牌方法readLine()一次性读取一整行文本读到文件末尾返回 null遍历日志、小说文本标配 示例标准代码java运行FileReader fr new FileReader(c.txt); BufferedReader br new BufferedReader(fr); while(true){ String line br.readLine(); if(line null) break; System.out.println(line); } br.close(); // 只关外层过滤流即可内层自动释放2. PrintWriter 打印输出流开发日志打印、导出文本首选功能拉满支持 8 大基础数据类型输出println()自动换行print()不换行println(Object obj)自动调用对象 toString只存文字不需要序列化接口自带缓冲操作简单易用五、桥转换流字节流 ↔ 字符流转换器解决乱码核心InputStreamReader字节转字符输入、OutputStreamWriter字节转字符输出 核心两大作用打通字节流和字符流实现互相包装转换手动指定读写编码彻底解决中文乱码问题 标准使用步骤创建字节节点流FileInputStream/FileOutputStream套桥转换流同时指定 UTF-8/GBK 编码外层包装 BufferedReader/PrintWriter 增强读写只关闭最外层流底层资源自动释放六、File 类专门管理文件 / 文件夹本体和 IO 流区分开核心区别一句话分清IO 流操作文件里面的内容读文字、写数据、复制文件File 类操作文件 / 文件夹外壳本身创建删除文件、重命名、遍历文件夹不读写内容高频常用方法getName()获取文件名带后缀getAbsolutePath()获取文件完整绝对路径开发调试必备isFile()判断当前对象是不是文件isDirectory()判断是不是文件夹listFiles()获取文件夹下所有子文件、子文件夹数组递归遍历文件夹筛选.java 文件经典案例java运行public static void selectAllEndJava(File file){ File[] fs file.listFiles(); for(File f : fs){ if(f.isFile()){ String name f.getName(); if(name.endsWith(.java)){ System.out.println(f.getAbsolutePath()); } }else{ // 文件夹递归继续遍历 selectAllEndJava(f); } } }逻辑拿到文件夹所有子项是文件就判断后缀打印路径是文件夹就递归深挖。七、IO 全体系思维导图极简总结1. 字节流全能所有文件父类InputStream / OutputStream节点流FileInputStream、FileOutputStream过滤流Buffered 缓冲流、Data 基础类型流、Object 对象序列化流2. 字符流仅纯文本父类Reader / Writer节点流FileReader、FileWriter过滤流BufferedReader、PrintWriter桥转换流InputStreamReader、OutputStreamWriter编码转换、字节字符互通3. File 类独立体系只管理文件外壳不读写内部内容递归遍历、增删改文件专用。收尾碎碎念日常开发分场景选流图片视频压缩包用字节缓冲流日志、txt 文档优先字符 BufferedPrintWriter有中文乱码直接上桥转换流指定编码需要保存对象用 Object 流批量遍历文件夹文件直接 File 递归。IO 所有流用完必须 close 释放资源不然长期运行疯狂内存泄漏踩大坑

相关新闻