2011-06-25 31 views
-2

我已經在java中創建了一個文件,其中有一個對象寫在該文件中 文件有一個文本擴展名,但有一個垃圾字符。任何提示,程序或教程可用於請幫助。我寫了一個對象到一個java文件I/O在那個文件中得到了垃圾數據

有包括豆一包文件

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(); 


} 


} 

在這裏,我得到了在輸出文件中的垃圾數據,如

​​

請幫忙解決這個垃圾數據

在此先感謝

+4

請說明您是如何將該對象寫入該文件的,並告訴我們您的意思是「垃圾」,而不是您期望的內容。 – Mat

+1

問題可能是字符編碼 – Tim

回答

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; 
} 
} 
相關問題