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) данные являются нулевыми.

0 ответов

Другие вопросы по тегам