gpt4 book ai didi

java - ObjectInputStream 中的 StreamCorruptedException

转载 作者:行者123 更新时间:2023-11-29 08:55:20 26 4
gpt4 key购买 nike

我正在尝试从 SD 卡读取 XML 文件并将其转换为对象类型。问题是当我使用 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

任何帮助都是可观的。

任何现有的解决方案都没有帮助

最佳答案

在我看来,您正试图将一个从 XML 文件读取的 FileInputStream 推送到一个 ObjectInputStream 中。这将导致 StreamCorruptedException,因为 ObjectInputStream 期望以 java 序列化对象格式 [1] 输入,但它看到的是字符流。

您的问题有几种解决方案:

如果您试图从 XML 中获取特定于 Android 的对象,那么您很可能应该从 Android API 中的相关函数中获取它。

如果这与 Android API 无关,则有一些包可以处理 XML[2] 的序列化。

1:这个有一个规范的名字,但我想不起来了。

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

关于java - ObjectInputStream 中的 StreamCorruptedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20521677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com