【问题标题】:End of line, FileWriter \n行尾,FileWriter \n
【发布时间】:2012-05-04 02:00:19
【问题描述】:

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

第 1 行

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

        }

我该如何解决这个问题?

【问题讨论】:

  • 如果您的问题已得到解答,或者不再有效,请“打勾”以选择最合适的答案,以便所有人都知道问题已得到解决。谢谢。

标签: java android append newline filewriter


【解决方案1】:

请使用以下代码,

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

    }

【讨论】:

  • 我看不出这段代码和我的代码有什么区别,是不是我贴错了代码?有点困惑
  • 我刚刚添加了“writer.newLine();”在关闭它之前。我相信您想在文件末尾添加换行符。
  • 我希望文件中的行分开,在这个阶段我是否做newLine都没有关系,它仍然附加到同一行
  • 然后尝试使用 writer.write("\\r\\n");哪里有 writer.newLine();在上面的代码中。
【解决方案2】:

而不是使用writer.newLine();

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

【讨论】:

  • newLine()write(System.getProperty("line.separator")) 相同,应该是系统的正确线路终止符。
【解决方案3】:

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

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

【讨论】:

  • 在我的 Android 中仍然打印在同一行
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    为什么不通过在写入命令中包含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】:

      我已经尝试了以下代码,它似乎产生了你所追求的。

      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


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

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-12-26
          • 2011-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-20
          • 2011-06-25
          • 1970-01-01
          • 2013-03-02
          相关资源
          最近更新 更多