有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我已经将一个对象写入了一个java文件,I/o在该文件中获得了垃圾数据

我用java创建了一个文件,文件中写入了对象 文件有文本扩展名,但有垃圾字符。任何关于这方面的提示、计划或教程,请提供帮助

有一个包含Bean文件的包

package Packageit;

import java.io.*;



public class Object1 implements Serializable
{
private String name;
private String Account;
private String City;




public void setName(String name)
{
   this.name=name;
}

public String getName()
{
 return name;
}

public void setAccount(String Account)
{
this.Account=Account;
}
public String getAccount()
{
 return Account;
}
public void setCity(String city)
{
 this.City=City;
}
public String getCity()
{
 return City;
}

}

这个项目的使命就在这里

import java.io.*;
import Packageit.*;

public class FilterFlush {
public static void main (String args[])throws IOException
{   Object1 obj = new Object1();
    obj.setName("Girish");
    obj.setAccount("3456");
    obj.setCity("Ahmedabad");
        FileOutputStream f =new FileOutputStream("Tmp.txt");
    ObjectOutputStream ob =new ObjectOutputStream (f);
        ob.writeObject(obj);
        ob.flush();   


}


}

我在输出文件中得到了一个垃圾数据,比如

Ԁ牳ᄀ慐正条楥⹴扏敪瑣쀱늄㶔楚˱̀L䄇捣畯瑮t䰒慪慶氯湡⽧瑓楲杮䰻Ѐ楃祴q~䰁Ѐ慮敭q~码瑰Ѐ㐳㘵瑰؀楇楲桳

请帮助解决这些垃圾数据

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    问题是ObjectOutputStream使用二进制编码来写入对象。如果想要对象的可读版本,可以使用XMLEncoder。这将为对象中的字段提供xml表示

    Object1 obj = new Object1();
    obj.setName("Girish");
    obj.setAccount("3456");
    obj.setCity("Ahmedabad");
        FileOutputStream f =new FileOutputStream("Tmp.txt");
    XMLEncoder ob =new XMLEncoder (f);
        ob.writeObject(obj);
        ob.flush();   
    

    如果想要一个真正可读的对象版本,那么应该重写toString()方法,并将属性组合成一个有意义的字符串

    ...
    public String getCity()
    {
     return City;
    }
    
    @Override
    public String toString() 
    {
        return Account + " for " + Name + " in " + City;
    }
    }