我正在尝试从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
。
任何帮助都很明显。
任何现有的解决方案都无济于事
答案 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)