2013-12-11 45 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)

相关问题