2013-12-11 2 views
2

Я пытаюсь прочитать XML-файл с SD-карты и преобразовать его в тип объекта. Проблема заключается в том, когда я читаю файл с использованием FileInputStream и передаю объект FileInputStream на ObjectInputStream, я получаю исключение StreamCorruptedException.StreamCorruptedException в ObjectInputStream

//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 serialized object [1], но вместо этого видит поток символов.

Есть несколько решений вашей проблемы:

Если вы пытаетесь захватить Android конкретного объекта из XML, то вы, скорее всего, должны получать ее от соответствующей функции в Android API.

Если это не связано с API Android, есть несколько пакетов, которые обрабатывают сериализацию в XML [2].

1: Для этого есть каноническое название, но я не могу вспомнить его с головы.

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

Смежные вопросы