2010-09-02 25 views

Trả lời

3

Tùy thuộc vào việc Bạn muốn lưu tệp trên phương tiện nội bộ hay bên ngoài. Đối với cả hai tình huống có mẫu lớn trên Android DEV trang web: http://developer.android.com/guide/topics/data/data-storage.html - điều này chắn sẽ giúp

+0

Tôi muốn lưu nó vào nội bộ. Im xem ObjectOutputStream bây giờ và nó trông thú vị nhưng không biết tại sao, không thể nhận được "fos = openFileOutput (tên tệp, Context.MODE_PRIVATE);" để làm việc, nó không chấp nhận tham số filename String của tôi ... địa ngục là gì ???? – Fabien

+0

Tôi phát hiện ra rằng đó là một vấn đề của bối cảnh. – Fabien

0

Dưới đây là ví dụ được kiểm tra về đề xuất của @ yayay. Lưu ý rằng việc sử dụng readObject() trả về một Object, vì vậy bạn sẽ cần truyền, mặc dù trình biên dịch sẽ khiếu nại rằng đó là một diễn viên không được chọn. Tôi vẫn có thể chạy mã của tôi tốt mặc dù. Bạn có thể đọc thêm về sự cố truyền here.

Chỉ cần đảm bảo rằng lớp học của bạn (trong trường hợp của tôi là ListItemsModel) được nối tiếp, vì writeObject() sẽ tuần tự hóa đối tượng của bạn và readObject() sẽ hủy kích hoạt đối tượng đó. Nếu nó không phải là (bạn không nhận được sự kiên trì và logcat ném một NotSerializableException), sau đó hãy chắc chắn rằng lớp học của bạn thực hiện java.io.Serializable, và bạn tốt để đi. Lưu ý, không có phương thức nào cần triển khai trong giao diện này. Nếu lớp học của bạn không thể triển khai Serializable và hoạt động (ví dụ: các lớp thư viện của bên thứ ba), this link sẽ giúp bạn sắp xếp hàng loạt đối tượng của mình.

private void readItems() { 

     FileInputStream fis = null; 
     try { 
      fis = openFileInput("groceries"); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     try { 
      ObjectInputStream ois = new ObjectInputStream(fis); 
      ArrayList<ListItemsModel> list = (ArrayList<ListItemsModel>) ois.readObject(); 
     } catch (IOException | ClassNotFoundException e) { 
      e.printStackTrace(); 
} 

private void writeItems() { 

     FileOutputStream fos = null; 
     try { 
      fos = openFileOutput("groceries", Context.MODE_PRIVATE); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     try { 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 
      oos.writeObject(itemsList); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
} 
Các vấn đề liên quan