2022.5.5 I/O转换流
转换流(内存的字符与硬盘字节之间的转换)
桥转换流
-
InputStreamReader :是字节流转字符流(读:硬盘->内存)
-
OutputStreamWriter:是字符流转字节流(写:内存->硬盘)
可将字节流转换为字符流
可设置字符的编码方式
InputStreamReader
读取文件,指定使用编码
package com.xing.转换流; import java.io.*; public class Demo01 { public static void main(String[] args) throws IOException { //创建字节流 FileInputStream fis = new FileInputStream("d:\\write.txt"); // 参数为字节流,编码方式 InputStreamReader isr = new InputStreamReader(fis, "utf-8"); // 2 读取文件 int data = 0; while((data = isr.read()) != -1){ System.out.print((char)data); } // 3 关闭 isr.close(); } }
OutputStreamWriter
-
OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节。
-
它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
-
每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。
-
在写入底层输出流之前,得到的这些字节将在缓冲区中累积。
-
为了获得最高效率,可考虑将OutputStreamWriter包装到BufferedWriter中,以避免频繁调用转换器。
-
例如:Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
package com.xing.转换流; import java.io.*; public class Demo02 { public static void main(String[] args) throws IOException { //创建字节输出流 FileOutputStream fos = new FileOutputStream("d:\\info.txt"); // 参数为字节流,编码方式 OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8"); // 2 写入 for(int i = 0; i < 10; i ++){ osw.write("写入内容\n"); osw.flush(); } // 3 关闭 osw.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现