2015-01-07 31 views
8

Kullanıcı tarafından bir dosya (dahili depolama) veri girişi içine kaydedilen bir uygulama var ve başlangıçta bu dosyayı yükler ve içeriğini gösterir. Bilirdim: Dosyamı nerede bulabilirim (data.txt)? Ayrıca, "Merhaba" ve sonra "Dünya" yı yüklediğimde, aynı satırda "HelloWorld" görüyorum ama "Merhaba" ve "Dünya" 2 farklı satırda basılmasını istiyorum. Yükleme dosyası içinAndroid FileOutputStream konum kaydetme dosyası

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()); 
    } 
} 

: dosyayı kaydetmeden için

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; 
} 

teşekkür

[GÜNCELLEME] Her girişinden sonra "\ n" ekledikten

:

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

Ama onlar aynı satırda her zaman dosyamı yazdırırken

+0

i dosyayı kaydetmek için yeni bir yol ayarlayabilirsiniz nasıl ? – xXJohnRamboXx

cevap

11

Sen

YourActivity.this.getFilesDir().getAbsolutePath() kullanılarak openFileOutput tarafından oluşturulan dizinin yolunu bulabilirsiniz ama "Merhaba" ve "Dünya" 2 farklı hat basılmış istiyorum.

Kullanım line.separator olarak dosyada sözcüğü yazdıktan sonra:

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

Ya da birden fazla satıra Dize kırmak için replaceAll kullanabilirsiniz:

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

benim yolum/data/data/mypackage ama eğer gidersem boş..mesela benim cihazımın onu görmek için köklü olması gerekiyor .. Dize ayırıcı = System.getProperty ("line.separator"); çalışmıyor..words hala aynı satırda – xXJohnRamboXx

+0

@xXJohnRamboXx: dosyadan veri okurken ve sonra yeni satır eklediğinizden emin misiniz? –

+1

@xXJohnRamboXx: stringBuilder.append (almaString); stringBuilder.append ("\ n"); ' –

3

Ben buradan bulabilirsiniz sanırım: veri/data/[paket adı]/... ve sadece iki ayrı satırlarda yazmaya ilişkin başka bir satıra gitmeniz gerektiğinde "\ n" ekleyin. Dosyam (data.txt) nerede bulabilirim?

+0

Verilerim/verilerim boş ... her kelimeden sonra "\ n" ifadesini ekledik ama hiçbir şey yapmadik:/ – xXJohnRamboXx

+0

Yeni kodunuzu yeni linkin sorunu çözmek için güncelleyin. –

+0

Sdcard'inize veri yazmak istiyorsaniz, bunu bir kez dikkatlice okuyun öğretici: http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93Writing-and-Reading-Files –