ObjectInputStream中的StreamCorruptedException

时间:2013-12-11 14:25:05

标签: java android xml

我正在尝试从SD卡读取XML文件并将其转换为Object类型。 问题是,当我使用FileInputStream阅读文件并将FileInputStream对象传递给ObjectInputStream时,我收到异常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,但也看到了同样的异常。

有没有办法在传递给ObjectInputStream之前将XML直接转换为对象类型?

我必须根据我的项目使用ObjectInputStream

任何帮助都很明显。

任何现有的解决方案都无济于事

1 个答案:

答案 0 :(得分: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)