2014-06-25 58 views
0

這是我的Android應用程序中的一種方法,應該在添加新的String文本之前在文本文件中創建一個新行。但是,當它運行時,沒有新行。爲什麼不在Android的文本文件中創建新行?

public void addTextToFile(String text) { 
    try 
    { 
     File log=new File(getFilesDir()+File.separator+"MileageLog.txt"); 

     BufferedWriter bufferedWriter=null; 
     if(log.exists()==false) 
     { 
      bufferedWriter = new BufferedWriter(new FileWriter(log+"\n")); 


     }else{ 
      bufferedWriter = new BufferedWriter(new FileWriter(log+"\n", true)); 

     } 
     String[] lines=text.split("\n"); 
     for(String line:lines) 
     { 
      bufferedWriter.write(line); 

     } 
     bufferedWriter.close(); 
     Toast.makeText(getBaseContext(), "Added Successfully", Toast.LENGTH_SHORT).show(); 
     finish(); 
    }catch(IOException ex) 
    { 
     ex.printStackTrace(); 

    } 

回答

1

因爲你不寫新行字符(你是通過新行字符其實分割文本所以你lines沒有新行字符)

改變它

bufferedWriter.write(line); 
bufferedWriter.newLine(); 

如果你想在每行之後添加新行

+1

請注意,這會產生一個StringBuilder分配,它比剛寫入'line'和然後'\ n'的開銷要大。因此,如上所述使用'.newLine()'或將其包裝在'PrintWriter'中並使用'.println()'可能會更便宜(可能會忽略同步)。 – tilpner

+0

@Stack同意,修正答案 –

+0

在大多數情況下,這只是一個非常小的問題,爲了效率而交易冗長。我只是想指出。 :) – tilpner

相關問題