2010-09-02 24 views

उत्तर

3

यह निर्भर करता है कि आप आंतरिक या बाहरी मीडिया पर फ़ाइल सहेजना चाहते हैं। दोनों स्थिति के लिए वहाँ एंड्रॉयड देव साइट पर महान नमूने हैं: http://developer.android.com/guide/topics/data/data-storage.html - यह निश्चित की मदद करनी चाहिए

+0

मैं इसे आंतरिक में सहेजना चाहता हूं। मैं अब ऑब्जेक्टऑटपुटस्ट्रीम देख रहा हूं और इसकी रोचक दिलचस्प है लेकिन पता नहीं क्यों, "fos = openFileOutput (फ़ाइल नाम, Context.MODE_PRIVATE) नहीं मिल सकता है;" काम करने के लिए, यह मेरे स्ट्रिंग फ़ाइल नाम पैरामीटर स्वीकार नहीं करता है ... क्या नरक है ???? – Fabien

+0

Ive पता चला कि इसकी संदर्भ की समस्या है। – Fabien

11

खुला एक फ़ाइल openFileOutput() (http://developer.android.com/guide/topics/data/data-storage.html#filesInternal) का उपयोग कर, की तुलना में एक ObjectOutputStream का उपयोग करें (http://download.oracle.com/javase/1.4.2/docs/api/java/io/ObjectOutputStream.html) अपनी ऑब्जेक्ट को फ़ाइल में लिखने के लिए।

प्रक्रिया को उलट करने के लिए अपने बुरे जुड़वां openFileInput() और ObjectInputStream() का उपयोग करें।

0

यहां @ याय के सुझाव का एक परीक्षण उदाहरण है। ध्यान दें कि readObject() का उपयोग Object देता है, इसलिए आपको कास्ट करने की आवश्यकता होगी, हालांकि संकलक शिकायत करेगा कि यह एक अनचेक कलाकार है। हालांकि मैं अभी भी अपना कोड ठीक चला सकता हूं। आप कास्टिंग समस्या here के बारे में अधिक पढ़ सकते हैं।

बस सुनिश्चित करें कि अपनी कक्षा (मेरे मामले में, ListItemsModel) serializable है, क्योंकि writeObject() अपने वस्तु को क्रमानुसार जाएगा, और readObject() यह deserialize होगा। यदि यह नहीं है (आपको कोई दृढ़ता नहीं मिलती है और लॉगकैट NotSerializableException फेंकता है), तो सुनिश्चित करें कि आपकी कक्षा java.io.Serializable लागू करती है, और आप जाने के लिए अच्छे हैं। नोट, इस इंटरफ़ेस में लागू करने के लिए कोई विधि लागू करने की आवश्यकता नहीं है। यदि आपकी कक्षा Serializable लागू नहीं कर सकती है और काम (जैसे तृतीय पक्ष लाइब्रेरी कक्षाएं), this link आपको अपनी ऑब्जेक्ट को क्रमबद्ध करने में मदद करता है।

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(); 
     } 
} 
संबंधित मुद्दे