Android Java: как правильно закрыть ObjectInputStream и FileInputStream
Ниже я пытаюсь закрыть потоки, но в StrictMode я продолжаю получать:
"Ресурс был получен при подключенной трассировке стека, но не был освобожден. См. Java.io.Closeable для получения информации о том, как избежать утечек ресурсов".
Линия, на которую ссылаются, чтобы быть:
FileInputStream FIS = new FileInputStream(file);
Вот код:
public static <T> T getStoredList(File file) throws IOException, ClassNotFoundException {
FileInputStream FIS = new FileInputStream(file);
ObjectInputStream OIS = new ObjectInputStream(FIS);
List<T> data = (ArrayList) OIS.readObject();
FIS.close();
OIS.close();
return (T) data;
}
После комментария ниже я обновил код:
public static <T> T getStoredList(File file) throws IOException, ClassNotFoundException {
FileInputStream FIS = null;
ObjectInputStream OIS = null;
try {
FIS = new FileInputStream(file);
OIS = new ObjectInputStream(FIS);
List<T> data = (ArrayList) OIS.readObject();
return (T) data;
} finally {
if (FIS != null) {
FIS.close();
}
if (OIS != null) {
OIS.close();
}
}
}
Но при этом (T) данные являются нулевыми.