Как указал Том Хоутин в комментариях, вы должны иметь возможность использовать встроенный в Java класс SequenceInputStream
для десериализации объекта, который разбит на несколько файлов. Этот подход также позволяет десериализовать объект, разбитый на любое количество файлов, поскольку конструктор SequenceInputStream
принимает два объекта InputStream
, один из которых может быть другим SequenceInputStream
.
Я создал небольшой пример, который должен работать на Android, хотя я тестировал его только на настольной установке Java. Пример работает в предположении, что вы сериализовали объект типа Foo
и разбили сериализованную версию между двумя именами файлов myobj.part1
и myobj.part2
.
Пример довольно понятен, но если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.SequenceInputStream;
...
ObjectInputStream in = null;
try {
in = new ObjectInputStream(
new SequenceInputStream(
new FileInputStream("myobj.part1"),
new FileInputStream("myobj.part2")));
Foo foo = (Foo) in.readObject();
// Do something with the deserialized object...
foo.doSomething();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) { }
}
}