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();
        }
    }
}
相关推荐
洛阳泰山2 分钟前
别卷 Python 了:我用 Java 21 + Spring Boot 3 打造了一个企业级 RAG + 智能体工作流引擎(附架构与源码解析)
java·spring boot·后端
MetaLite12 分钟前
Spring Cache只留注解-MetaLite如何二开缓存运行时
java·spring·缓存
Wang's Blog16 分钟前
Java框架快速入门: Spring Security+OAuth2之自定义数据库表结构实现认证
java·数据库·spring
白远山17 分钟前
家政服务派单平台搭建实战指南:从需求分析到系统设计全流程解析
java·开发语言·架构·uni-app·需求分析
树若逝花若殇22 分钟前
基于Spring AOP优雅记录请求响应日志
java·spring boot
Tairitsu_H33 分钟前
[C++] C++11右值引用与移动语义揭秘
开发语言·c++·c++11·右值引用·移动语义
Yyyyyy~1 小时前
【java】数组的定义和使用
java
麻辣布丁1 小时前
java集合篇面试模拟
java·开发语言·面试
niucloud-admin1 小时前
JAVA V6 多商户商城 开发文档——插件开发规范
java·开发语言
嘟哩DuliDuli1 小时前
创作 Agent 的任务状态该如何保存
android·java·javascript