2015-01-07 11 views
8

मेरे पास एक ऐप है जो उपयोगकर्ता द्वारा फ़ाइल (आंतरिक स्टोरेज) डेटा इनपुट में सहेजता है और स्टार्टअप पर यह फ़ाइल लोड करता है और सामग्री दिखाता है। मुझे पता होगा: मुझे अपनी फाइल (data.txt) कहां मिल सकती है? इसके अलावा, अगर मैं फ़ाइल लोड करता हूं तो "हैलो" और फिर "वर्ल्ड" इनपुट करता हूं, मुझे उसी पंक्ति में "हैलोवर्ल्ड" दिखाई देता है लेकिन मुझे 2 अलग-अलग पंक्तियों में "हैलो" और "वर्ल्ड" मुद्रित करना है।एंड्रॉइड फ़ाइलऑटपुटस्ट्रीम स्थान फ़ाइल को सहेजें

फ़ाइल को सहेजने के लिए:

public void writeToFile(String data) { 
    try { 
     FileOutputStream fou = openFileOutput("data.txt", MODE_APPEND); 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fou); 
     outputStreamWriter.write(data); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

फ़ाइल लोड करने के लिए:

public String readFromFile() { 

    String ret = ""; 

    try { 
     InputStream inputStream = openFileInput("data.txt"); 

     if (inputStream != null) { 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
      String receiveString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((receiveString = bufferedReader.readLine()) != null) { 
       stringBuilder.append(receiveString); 
      } 

      inputStream.close(); 
      ret = stringBuilder.toString(); 
     } 

    } 
    catch (FileNotFoundException e) { 
     Log.e("login activity", "File not found: " + e.toString()); 
    } catch (IOException e) { 
     Log.e("login activity", "Can not read file: " + e.toString()); 
    } 

    return ret; 
} 

धन्यवाद

[अद्यतन]

मैं हर इनपुट के बाद डाला है "\ n":

user = (EditText) v.findViewById(R.id.username); 
writeToFile(user.getText().toString() + "\n"); 

लेकिन जब मैं अपने फ़ाइल वे हमेशा एक ही लाइन पर हैं प्रिंट

+0

मैं कैसे फ़ाइल को सहेजने के लिए नए पथ सेट कर सकते ? – xXJohnRamboXx

उत्तर

11

मुझे अपनी फ़ाइल (data.txt) कहां मिल सकती है?

आप YourActivity.this.getFilesDir().getAbsolutePath()

का उपयोग कर जो जो openFileOutput द्वारा बनाई गई है निर्देशिका की राह पा सकते हैं, लेकिन मैं चाहता हूँ "नमस्ते" और "दुनिया" 2 अलग लाइनों में छपी।

उपयोग line.separator के रूप में फ़ाइल में शब्द लिख के बाद:

String separator = System.getProperty("line.separator"); 
outputStreamWriter.write(data); 
outputStreamWriter.append(separator); 
... 

या आप भी replaceAll उपयोग कर सकते हैं कई पंक्तियों में स्ट्रिंग को तोड़ने के लिए:

String separator = System.getProperty("line.separator"); 
data=data.replaceAll(" ",separator); 
+0

मेरा पथ/डेटा/डेटा/माइपैकेज है लेकिन यदि मैं वहां जाता हूं खाली .. शायद यह आवश्यक है कि मेरा डिवाइस इसे देखने के लिए जड़ है .. स्ट्रिंग विभाजक = System.getProperty ("line.separator"); काम नहीं करता है..वर्ड अभी भी एक ही पंक्ति में हैं – xXJohnRamboXx

+0

@xXJohnRamboXx: क्या आप वाकई फ़ाइल से डेटा पढ़ रहे हैं और फिर नई लाइन जोड़ रहे हैं? –

+1

@xXJohnRamboXx: इसे 'stringBuilder.append (receString) के रूप में आजमाएं; stringBuilder.append ("\ n"); ' –

3

मैं तुम्हें इसे यहाँ पा सकते हैं लगता है: डेटा/डेटा/[अपने पैकेज का नाम]/... और सिर्फ दो अलग-अलग लाइनों में लेखन के बारे में जब भी आपको दूसरी पंक्ति में जाना होगा "\ n" जोड़ें।

+0

मेरा डेटा/डेटा खाली है .. मैंने अभी भी प्रत्येक शब्द के बाद "\ n" जोड़ा है लेकिन कुछ भी नहीं:/ – xXJohnRamboXx

+0

नई समस्या को हल करने के लिए पहले अपना नया कोड अपडेट करें –

+0

यदि आप अपने एसडीकार्ड में डेटा लिखना चाहते हैं तो एक बार ध्यान से इसे पढ़ें ट्यूटोरियल: http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93 लेखन- और- रीडिंग- फ़ाइल –

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