行尾,FileWriter \ n

时间:2012-04-23 12:48:16

标签: java android append newline filewriter

我正在尝试在已经存在的文件中添加换行符,但是我尝试过的所有命令都只是附加到第一行。我希望文件中的输出看起来像

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){

        }

我该如何解决这个问题?

7 个答案:

答案 0 :(得分: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

     

从时间戳中可以看出,我每次都会在文件末尾添加新行。

答案 1 :(得分: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){

    }

答案 2 :(得分:0)

而不是使用writer.newLine();

您应该使用writer.write("\\n\\r");

答案 3 :(得分:0)

您也可以尝试使用PrintWriter.println(String s)

http://docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html

答案 4 :(得分:0)

如果您只想要最后一个换行符,请在writer.newLine()之后追加writer.write("Row2")。 如果没有写入newLine,writer.newLine()可能会将错误的行结束标记写入文件。手写。

答案 5 :(得分: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){

    }

答案 6 :(得分:0)

尝试连续添加两个换行符,而不是添加一行。

一个用于转到ROW1下面的行,另一个用于插入另一个空行。