老坛酸菜吃鸭子 2022-04-02 13:04 采纳率: 83.3%
浏览 79
已结题

【java】使用字符流复制文件 乱码

问题相关代码,请勿粘贴截图

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.CharBuffer;

public class Ooutputstreamwrite {

    public static void main(String[] args) throws IOException {

        OutputStreamWriter o= new OutputStreamWriter(new FileOutputStream("D:\\FILE\\a.txt"),"GBK");
        /* 构造方法
         * OutputStreamWriter(OutputStream out)
         * OutputStreamWriter(OutputStream out,String charsetName) */
        InputStreamReader i= new InputStreamReader(new FileInputStream("D:\\FILE\\java.txt"),"GBK");

        char[]  b=new char[100];
        while(i.read(b)!=-1) {
            o.write(b);
        }
        o.close();
        i.close();

    }

}

运行结果及报错内容

a.txt文件复制内容乱码

我的解答思路和尝试过的方法

加上了GBK编码为什么还是乱码,new String()方法里面要求的是 byte[]类型,强制转换也不行,字符流用来操作中文的便利性体现在哪里,感觉还是很麻烦

我想要达到的结果

成功复制中文

  • 写回答

1条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2022-04-02 13:10
    关注

    要保证 java.txt 文件使用 GBK 编码存储才能用 GBK 编码读取,否则就会乱码,如果你不确定编码类型的话可以改成 UTF-8 试试看,这个编码用的比较多。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    问题事件

    • 系统已结题 4月10日
    • 已采纳回答 4月2日
    • 创建了问题 4月2日

    悬赏问题

    • ¥15 MYSQL 订单的商品明细重复计算问题
    • ¥15 微信实时共享位置修改
    • ¥100 TG的session协议号转成直登号号后客户端登录几分钟后自动退出设备
    • ¥30 共模反馈回路的小信号增益
    • ¥15 arduino ssd1306函数与tone函数放歌代码不兼容问题
    • ¥70 0.96版本hbase的row_key里含有双引号,无法deleteall
    • ¥40 Ida Pro增加插件出现问题
    • ¥15 诊断性META分析合并效能的检验
    • ¥15 请问abb根据色块判断奇偶数并根据批次号放入仓储
    • ¥66 开发PC客户端一定也要开发上位机吗?