2012-04-23 125 views
0

我想換行追加到一個已經存在的文件,但我已經嘗試了所有的命令導致了剛剛追加到第一線。我想文件中的輸出看起來像行末,FileWriter的 n

ROW1

ROW2

private void addToFavToFile(String site){ 
     BufferedWriter writer = null; 
     File root = Environment.getExternalStorageDirectory(); 
     try{ 
      writer = new BufferedWriter(new FileWriter(Environment.getExternalStorageDirectory()+"/test2.txt",true)); 
      writer.write("ROW1"); 
      writer.newLine(); 
      writer.write("ROW2"); 
      writer.close(); 
     }catch(Exception e){ 

     } 

如何解決這個問題?

+0

如果您的問題已被回答,或者如果它不再有效,請勾選以選擇最合適的答案,以便大家都知道問題已得到解決。謝謝。 – wattostudios 2012-05-14 13:37:34

回答

0

請使用下面的代碼,

private void addToFavToFile(String site){ 
    BufferedWriter writer = null; 
    File root = Environment.getExternalStorageDirectory(); 
    try{ 
     writer = new BufferedWriter(new FileWriter(Environment.getExternalStorageDirectory()+"/test2.txt",true)); 
     writer.write("ROW1"); 
     writer.newLine(); 
     writer.write("ROW2"); 
     writer.newLine(); 
     writer.close(); 
    }catch(Exception e){ 

    } 
+0

我看不到這段代碼和我的代碼之間的區別,我發佈代碼錯了嗎? abit confused – Anticipating 2012-04-23 12:58:45

+0

我剛剛添加了「writer.newLine();」在關閉它之前。我相信你想在文件末尾添加換行符。 – 2012-04-23 13:00:08

+0

我想把文件中的行分開,如果我在這個階段執行newLine並不重要,它仍然附加在同一行 – Anticipating 2012-04-23 13:01:38

0

而不是使用writer.newLine();

您應該使用writer.write("\\n\\r");

+0

'newLine()'與'write(System.getProperty(「line.separator」))'相同,*應該是系統的正確的行終止符。 – 2012-04-23 12:59:31

0

如果您只想要最後的換行符,請在writer.write("Row2")後附加writer.newLine()。 如果沒有新行被寫入,writer.newLine()可寫的不對行結束標記到文件中。用手寫下。

0

你爲什麼不強迫它在文件的通過在寫命令的offset末寫...

private void addToFavToFile(String site){ 
    BufferedWriter writer = null; 
    File root = Environment.getExternalStorageDirectory(); 
    try{ 
     File fileToWrite = new File(Environment.getExternalStorageDirectory()+"/test2.txt"); 
     int endOfFile = (int)file.length(); 

     writer = new BufferedWriter(new FileWriter(fileToWrite,true)); 

     String string1 = "ROW1"; 
     writer.write(File.separator + string1,endOfFile,string1.length); 
     endOfFile += string1.length; 

     String string2 = "ROW2"; 
     writer.write(File.separator + string2,endOfFile,string2.length); 
     endOfFile += string2.length; 

     writer.close(); 
    }catch(Exception e){ 

    } 
1

我曾嘗試下面的代碼,它似乎產生什麼你在之後。

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 

public class TestNewLines { 

public static void main(String[] args) { 
    TestNewLines testFiles = new TestNewLines(); 
    testFiles.addToFavToFile(""); 
} 

private void addToFavToFile(String site){ 
    BufferedWriter writer = null; 
    try{ 
     writer = new BufferedWriter(new FileWriter("test.txt",true)); 
     insertEmptyLine(writer); 
     writer.write("ROW1: " + System.currentTimeMillis()); 
     insertEmptyLine(writer); 
     writer.write("ROW2: " + System.currentTimeMillis()); 
     insertSeperator(writer); 
     writer.close(); 
    } catch(Exception e){ 

    } 
} 

private void insertEmptyLine(BufferedWriter writer) throws IOException { 
    writer.newLine(); 
    writer.newLine(); 
} 

private void insertSeperator(BufferedWriter writer) throws IOException { 
    writer.newLine(); 
    writer.write("********************"); 
} 
} 

要測試它,我把行「這是第一行」。在我的測試文件開始。運行幾次後,輸出如下所示:

這是第一行。

ROW1:1335189657127

ROW2:1335189657127


ROW1:1335189658390

ROW2:1335189658390


ROW1:1335189665738

ROW2:1335189665738


ROW1:1335189679638

ROW2:1335189679638


你可以從時間戳看,我追加新線到每個文件的結尾時間。

0

而不是增加一個新行,嘗試在一行中添加兩個換行符。

一個用於進入ROW1下方的行,另一個用於插入另一個空白行。