少年堕落者 2020-06-28 18:35 采纳率: 0%
浏览 190

初学Java,以串行化的方式写入对象到.txt文件,.txt文件是以二进制的方式写入的,打开就会是乱码,在程序中,怎么转换才不是乱码呢?又怎么读取???

1、写入源代码:

package cn.weenit.test2;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Demo01ObjectOutputStream {
    public static void main(String[] args) throws IOException {
        //1.创建ObjectOutputStream对象,构造方法中传递字节输出流
        //OutputStreamWriter osw=new OutputStreamWriter(

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("homework4/src/cn/weenit/TestFile/dest.txt"));
        //2.使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
        oos.writeObject(new Student("20150003","王五",68,93,97,258));
        //3.释放资源
        oos.close();
    }
}

2、写入的.txt文件,怎么让这个文件不是乱码?

图片说明

3、读取代码

package cn.weenit.test2;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class Demo02ObjectInputStream {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //1.创建ObjectInputStream对象,构造方法中传递字节输入流
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("homework4/src/cn/weenit/TestFile/source.txt"));
        //2.使用ObjectInputStream对象中的方法readObject读取保存对象的文件
        //Object o = ois.readObject();
        Object o = ois.readUTF();
        //3.释放资源
        ois.close();
        //4.使用读取出来的对象(打印)
        System.out.println(o);
        Student p = (Student)o;
        System.out.println(p.getNo()+p.getName()+p.getEnglish()+p.getChinese()+p.getMach()+p.getAlGrade());
    }
}

4、读取代码执行结果,怎么在源代码的基础修改能够读取?我觉得也是一种转换吧!

图片说明

  • 写回答

1条回答 默认 最新

  • 狐狸100 2020-06-29 08:49
    关注

    IDEA编译时使用的大概是UTF-8
    然而windows系统文件用的编码是GBK
    这可能导致了乱码的产生

    把FileInputStream接上InputStreamReader,
    把FileOutputStream接上OutputStreamWriter试试看

    图片说明

    也可以在字符串转byte的时候动手

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python