2015-01-07 67 views
8

我有一個應用程序保存到用戶輸入的文件(內部存儲)數據,並在啓動時加載此文件並顯示內容。我會知道:我在哪裏可以找到我的文件(data.txt)? 除了,如果我輸入「你好」,然後「世界」當我加載文件我看到「HelloWorld」在同一行,但我希望「你好」和「世界」打印在2不同的行。Android FileOutputStream位置保存文件

爲了節省文件:

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

我的路徑是/ data/data/mypackage,但如果我去那裏empty..maybe它是必要的我的設備是根植的看到它.. String separator = System.getProperty(「line.separator」); 不工作..字仍然在同一行 – xXJohnRamboXx

+0

@xXJohnRamboXx:你確定當你從文件讀取數據然後添加新行? –

+1

@xXJohnRamboXx:嘗試它爲::'stringBuilder.append(receiveString); stringBuilder.append(「\ n」);' –

3

我想你可以在這裏找到:數據/數據/ [你的包名稱]/...,只是關於兩個單獨的行寫每當需要轉到另一行時添加「\ n」。

+0

我的數據/數據是空的..我剛剛在每個單詞後面添加了「\ n」,但沒有任何內容:/ – xXJohnRamboXx

+0

更新您的新代碼以解決newLine問題 –

+0

如果要在SD卡中寫入數據,教程:http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93Writing-and-Reading-Files –