Android Java:如何关闭ObjectInputStream和FileInputStream

时间:2016-11-14 06:23:47

标签: java android fileinputstream objectinputstream

下面我尝试关闭流,但在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 个答案:

没有答案