2013-05-20 53 views
1

Argargarg。Android寫入文件導致隨機字符

我想從用戶輸入中獲取信息,然後將其寫入系統文件。我得到了輸入,並且我調用了getBytes。它在那之後沿着「空」和隨機數字的行登錄文件。我試了一下得到的字符串,沒有運氣,這是符號 的隨機鏈下面是具體代碼:

 TextView note_input=(TextView) findViewById(R.id.note_input); 
    FileOutputStream fos=null; 
    String newNote=note_input.getText().toString(); 
    Log.w("Debug",newNote); 
    try { 
     fos=openFileOutput("currentNote",Context.MODE_APPEND); 
    } catch (FileNotFoundException e) { 
     //IT_SHOUD_NOT_EXIST 
    } 
    try { 
     Log.w("Debug",newNote.getBytes().toString()); 
     fos.write(newNote.getBytes()); 
     fos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

我明白任何幫助!

+1

您的日誌是否寫入正確的輸出,並且您的文件有問題? –

+0

它沒有。問題是函數getBytes。(我認爲) – user2402569

+0

是否有你的輸出文件使用OutputStream(基於字節)而不是Writer(基於字符)的原因? –

回答

0

String.getBytes返回字節數組,當您嘗試執行toString()時,實際上是在將其寫入字符串指針。你已經有了字符串改變這一行

Log.w("Debug",newNote.getBytes().toString()); 

Log.w("Debug",newNote); 

,你將有適當的輸出記錄和文件應妥善已經被寫入。

希望這有助於和喜歡你的工作

+0

我這樣做是爲了檢查發生了什麼。寫入文件的結果也是錯誤的 – user2402569

+0

但現在日誌應該是正確的? –

0

只是瞎猜,但我注意到你所呼叫的getBytes()沒有指定的字符編碼。除非您的輸出文件與系統默認編碼是相同的字符編碼,否則您可能很容易在輸出上產生亂碼。