Я читаю файл, содержащий двоичные данные, за которым следует сериализованный объект:
FileInputStream fis = new FileInputStream(file);
GZIPInputStream gzis = new GZIPInputStream(fis);
DataInputStream dis = new DataInputStream(gzis);
ObjectInputStream ois = new ObjectInputStream(gzis);
int i = dis.readInt();
Object o = ois.readObject();
При написании этого кода на ум приходит несколько вопросов:
1. Какие потоки следует закрыть?
2. Как правильно обрабатывать исключения без спагетти try-finally?