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();
    }
}

 

 

 

posted @   暴躁C语言  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示