我已经写了一个java文件的对象i / o在该文件中获得了垃圾数据

时间:2011-06-25 08:10:22

标签: java

我在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 个答案:

答案 0 :(得分:2)

问题是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;
}
}