Java的IO流-转换流

乱码问题

java 复制代码
package com.itheima.d2;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class Test4 {
    public static void main(String[] args) {
        try (
                //1、创建一个文件字符输入流与源文件接通
                //Reader fr = new FileReader("IO\\src\\itheima04.txt");
                Reader fr = new FileReader("IO\\src\\itheima.txt");
                //2、把文件字符输入流包装成缓冲字符输入流
                BufferedReader br = new BufferedReader(fr);
                ){

            String line;
            while ((line = br.readLine()) != null){
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
//乱码

字符输入转换流

public InputStreamReader(InputStream is, String charset)最常用

java 复制代码
package com.itheima.d2;

import java.io.*;

public class Test5 {
    public static void main(String[] args) {
        try(
                //1、得到文件的原始字节流
                InputStream is = new FileInputStream("IO\\src\\itheima.txt");
                //2、把原始的字节输入流按照指定的字符集编码转换成字符输入流
                Reader isr = new InputStreamReader(is, "GBK");
                //3、把字符输入流包装成缓冲字符输入流
                BufferedReader br = new BufferedReader(isr);
                ) {
            String line;
            while ((line = br.readLine()) != null){}
            System.out.println(line);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

字符输出转换流

第一种方法默认用UTF-8输出

java 复制代码
package com.itheima.d2;

import java.io.*;

public class Test6 {
    public static void main(String[] args) {
        try (
                //1、创建一个文件字节输出流
                OutputStream os = new FileOutputStream("IO/src/itheima07.txt");
                //2、把原始的字节输出流,按照指定的字符集编码转换成字符输出转换流
                Writer osw = new OutputStreamWriter(os, "GBK");
                //3、把字符输出流包装成缓冲字符输出流
                BufferedWriter bw = new BufferedWriter(osw);
                ){

            bw.write("我是好人");
            bw.write("老忒双击666");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
相关推荐
Flittly2 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了3 小时前
Java 生成二维码解决方案
java·后端
人活一口气7 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP9 小时前
Vibe Coding -- 完整项目案例实操
java
荣码9 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing9 小时前
Google第三方授权登录
java·后端·程序员
明月光8189 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑18 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯19 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java