IO流第38天(转换流InputStreamReader和OutputStreamWriter)

转换流InputStreamReader和OutputStreamWriter

  1. InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)
  2. OutputStreamWriter:Writer的子类,可以将OutputStream(字节流)包装成Writer(字符流)
  3. 当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文乱码问题,所以建议将字节流转换成字符流
  4. 可以在使用时指定编码格式(比如utf-8,gbk,gb2312等)
    InputStreamReader可以传入一个Input对象,而且可以指定处理的编码方式
    OutputStreamWriter可以传入一个Outnput对象,而且可以指定处理的编码方式
    image
    image
    InputStreamReader案例:
    演示使用InputStreamReader转换流解决中文乱码问题
    将字节流FileInputStream转换成InputStreamReader字符流
public static void main(String[] args) throws IOException {
        String filepath = "d:\\a.txt";
        //将 FileInputStream转成InputStreamReader,指定编码为gbk
        InputStreamReader isr = new InputStreamReader(new FileInputStream(filepath), "gbk");
        //将InputStreamReader传入给BufferedReader
        BufferedReader br = new BufferedReader(isr);
        //读取
        String s = br.readLine();
        System.out.println(s);
        br.close();
    }

OutputStreamWriter案例:
演示使用OutputStreamWriter转换流解决中文乱码问题
将字节流FileOutputStream转换成OutputStreamWriter字符流

 public static void main(String[] args) throws IOException {
        String filePath="d:\\abc.txt";
        String str="helle,龚嘉乐,你一定会成功,加油,努力";
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        OutputStreamWriter osw = new OutputStreamWriter(bos,"gbk");
        osw.write(str);
        System.out.println("输出成功");
        osw.close();
    }
posted @   不再犹豫27  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示