首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 從 SD 卡讀取多個序列化對象:循環調用 readObject 直到 EOF

     編輯:程式設計綜合問答

問題

ObjectInputStream.readObject() 每次只讀取**一個**對象,需循環讀取直到流結束。

正確讀取代碼

List dogs = new ArrayList<>();
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("/mnt/sdcard/somelocation/save.data"))) {
    while (true) {
        try {
            Dog dog = (Dog) in.readObject();
            dogs.add(dog);
        } catch (EOFException e) {
            break; // 讀取結束
        }
    }
} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}

關鍵點

  • EOFException 表示流結束,正常退出循環。
  • **寫入時**需按相同順序寫入:out.writeObject(dog1); out.writeObject(dog2); ...
  • 對象類必須實現 Serializable,**建議顯式聲明 serialVersionUID** 防止版本不兼容。
  • 大量數據考慮用 **SQLite/Room** 或 **Protocol Buffers/FlatBuffers** 替代 Java 序列化 (性能、體積、安全性更優)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved