0

既存のファイルに改行を追加しようとしていますが、試したすべてのコマンドで、最初の行に改行が追加されました。ファイルの出力を次のようにします

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

        }

どうすればこれを解決できますか?

4

7 に答える 7

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("********************");
}
}

それをテストするために、「This is the first line.」という行を入れました。私のテストファイルの先頭に。数回実行すると、出力は次のようになります。

これが最初の行です。

行 1: 1335189657127

行 2: 1335189657127


行 1: 1335189658390

行 2: 1335189658390


行 1: 1335189665738

行 2: 1335189665738


行 1: 1335189679638

行 2: 1335189679638


タイムスタンプからわかるように、毎回ファイルの最後に新しい行を追加しています。

于 2012-04-23T14:07:57.430 に答える
0

使用することもできますPrintWriter.println(String s)

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

于 2012-04-23T12:55:42.137 に答える
0

使用する代わりにwriter.newLine();

使用する必要がありますwriter.write("\\n\\r");

于 2012-04-23T12:53:36.187 に答える
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){

    }
于 2012-04-23T12:51:05.210 に答える
0

改行を 1 行追加する代わりに、改行を 2 行続けて追加してみてください。

1 つは ROW1 の下の行に移動するためのもので、もう 1 つはもう 1 行の空白行を挿入するためのものです。

于 2012-04-23T17:11:52.593 に答える
0

最後の改行だけが必要な場合は、writer.newLine()afterを追加しますwriter.write("Row2")。書き込まれている newLine がない場合writer.newLine()、間違った行終了マーカーがファイルに書き込まれる可能性があります。手で書いてください。

于 2012-04-23T12:58:14.670 に答える
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){

    }
于 2012-04-23T12:59:09.380 に答える