我在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~码瑰Ѐ㐳㘵瑰楇楲桳
请帮助解决垃圾数据
提前致谢
答案 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;
}
}