2013-12-11 78 views
2

我想從SD卡讀取XML文件並將其轉換爲Object類型。 問題是當我使用FileInputStream讀取文件並將FileInputStream對象傳遞給ObjectInputStream時,我得到一個異常StreamCorruptedExceptionObjectInputStream中的StreamCorruptedException

//gets external storage dir 
File externalstoragedir = Environment.getExternalStorageDirectory(); 

//gets the path to file. 
File externaltestcasefile = new File(externalstoragedir + "/" + FILENAME); 

//FileInputStream fis = new FileInputStream(externaltestcasefile); 

BufferedInputStream br = new BufferedInputStream(new FileInputStream(externaltestcasefile)); 

//Convert to ObjectInput Stream. 
ObjectInputStream ois = new ObjectInputStream(br); 

//read the data from the ObjectInputStreamto Object. 
Object fileData = ois.readObject(); 

即使我使用了BufferInputStream,但看到了相同的異常。

是否有任何方式將XML轉換爲對象類型直接傳遞給ObjectInputStream

我必須根據我的項目使用ObjectInputStream

任何幫助是可觀的。

任何現有的解決方案並沒有幫助

回答

0

它看起來像你對我都試圖推動一個FileInputStream,從XML文件中讀取,爲的ObjectInputStream。這將導致StreamCorruptedException,因爲ObjectInputStream期望以java序列化對象格式[1]輸入,但它會看到一個字符流。

有你的問題幾個解決方案:

如果你想抓住從XML的Android的特定對象,那麼你很有可能應該從Android API中的相關功能得到它。

如果這與Android API無關,那麼有幾個包處理序列化爲XML的包[2]。

1:有一個規範的名稱,但我不記得它從我的頭頂。

2:Serializing Java objects to xml and back (XML configuration)

相關問題