我正在尝试在已经存在的文件中添加换行符,但是我尝试过的所有命令都只是附加到第一行。我希望文件中的输出看起来像
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 :(得分: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下面的行,另一个用于插入另一个空行。