2012-04-23 48 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下方的行,另一个用于插入另一个空白行。