2010-09-02 13 views
7

यह पूरी तरह से वर्णन किया गया है here इसे कैसे करें, केवल समस्या: वह openFileOutput() फ़ंक्शन को नहीं जानता है;एंड्रॉइड: आंतरिक मेमोरी पर डेटा कैसे स्टोर करें?

private void saveSettingsFile() { 
      String FILENAME = "settings"; 
      String string = "hello world!"; 

      FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); //openFileOutput underlined red 
      try { 
      fos.write(string.getBytes()); 
      fos.close(); 
      } catch (IOException e) { 
      Log.e("Controller", e.getMessage() + e.getLocalizedMessage() + e.getCause()); 
      } 
} 

उन प्रासंगिक संकुल मैं आयातित कर रहे हैं:

import java.io.FileOutputStream; 
import java.io.IOException; 
import android.content.Context; 
+0

आप logcat त्रुटि उत्पादन साझा कर सकते हैं के अंदर कर रहे हैं तो क्या होगा? –

+0

मैंने अभी देखा है कि "openFileOutput" लाल रेखांकित है। ग्रहण ने मुझे अपनी कक्षा में एक तथाकथित विधि बनाने के लिए कहा, जिसे मैंने गलती से किया था। अब मैंने इस विधि स्टब को हटा दिया है और "openFileOutput" को लाल रंग में रेखांकित किया गया है। – OneWorld

+0

@ कॉन्स्टेंटिन: इसकी तुलना में अधिक तार्किक समस्या है। तो logcat अभी तक मदद नहीं करता है। सही पता है कि मैं इसे संकलित भी नहीं कर सकता। – OneWorld

उत्तर

2

dev.android.com पर उदाहरण से एक FileOutputStrem का उपयोग करने का this example पर एक नज़र डालें। यह आपको एक विचार देना चाहिए कि इसका सही तरीके से उपयोग कैसे किया जाए।

+0

धन्यवाद। मैं इस पर ध्यान दूँगा। हालांकि, मैं अभी भी इस 5 लाइनों को काम करना पसंद करूंगा। मेरा मतलब है कि ऊपर दिए गए दस्तावेज़ का लेखक मौलिक रूप से गलत नहीं हो सकता है। – OneWorld

+4

आपको किसी संदर्भ पर openFileOutput को कॉल करने की आवश्यकता है। 'Context.openFileOutput()' – fredley

+0

ठीक है, अच्छा सुझाव आज़माएं।हालांकि मेरे पास चर या ऑब्जेक्ट "संदर्भ" नहीं है। मैं इसे कैसे बना सकता हूं या प्राप्त करूं? – OneWorld

1

कक्षा जिसमें इस विधि को घोषित किया गया है, को "स्टेटिक" के रूप में परिभाषित किया गया है। यही कारण है कि यह त्रुटि फेंक रहा है। कक्षा परिभाषा और बिंगो से स्थैतिक निकालें ...

0

बस "पकड़ने का प्रयास करें" ब्लॉक जोड़ें और उन्हें इसके बीच में रखें।

इस तरह

:।

private void saveSettingsFile(String FILENAME, String data) { 

    FileOutputStream fos; 
    try { 
     fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
     fos.write(data.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } // openFileOutput underlined red 
    catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

जब रेखा के नीचे लाल रेखा .. पहले जांच कर लें लाइन पूर्ण sentense या sentense का केवल सही पक्ष के तहत है कि वहाँ है (यानी बराबर के चिह्न के बाद)।

यह पूरी लाइन को शामिल किया गया है, तो यह कुछ कीड़े को ठीक करने के लिए किया ..

या केवल sentense के दाईं ओर के तहत अगर यह ... तो यह चाहिए कुछ अपवाद हैंडलिंग चीजें चाहता है।

यदि आपको नहीं पता कि यह किस प्रकार का अपवाद उत्पन्न कर सकता है ...
डरो मत, बस एक कोशिश ब्लॉक में सभी कोड लिखें (कोशिश करें}} और फिर एक पकड़ जोड़ें और अंदर एक अपवाद वस्तु पास करें पकड़ने .. अब अपने ठीक ..

इस तरह

:

try 
    { 
    ...........your code 
    ...... 
    } 
    catch(Exception e) 
    { 
    e.printstacktrace(); 

    } 

अब सब ठीक कर रहे हैं।

धन्यवाद

0

openFileOutput संदर्भ वस्तु की एक विधि है। और धारा को बंद करने के लिए अंत में खंड जोड़ने के लिए मत भूलना। बोलो एक उदाहरण है (एंड्रॉइड की वजह से जावा 6 की वजह से थोड़ा बेकार)।

String data = "Hello"; 
FileOutputStream fos = null; 
try { 
    fos = mContext.openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    fos.write(data.getBytes(Charset.defaultCharset())); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if (fos != null) { 
     try { 
      fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

mContext चर ऊपर कहीं परिभाषित किया जाना चाहिए और mContext = getApplicationContext की तरह प्रारंभ() आप एक गतिविधि

संबंधित मुद्दे