java将新行添加到txt \ log文件

时间:2018-06-11 10:02:03

标签: java file text newline

我正在尝试为我的java脚本创建一个日志文件,以节省设备启动时的时间。

它的工作 - 每次启动他都会节省我在文件中的时间 但是我想在每次启动时添加一个新行,现在它会覆盖该文件 所以文件总是1行(最后一次启动)

我需要改变什么?

这是我写的代码:

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import java.text.SimpleDateFormat;
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) throws Exception 
    {

        Writer output; //to write the data into a file 
        String PathOfFile = "/home/pi/boot.log";
        PrintWriter writer = new PrintWriter(PathOfFile);
        output = new BufferedWriter(new FileWriter(PathOfFile , true));
        Calendar Time = Calendar.getInstance(); //get the time 
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy-HH:mm:ss");

        try 
        {
            System.out.println("Hello - the device is UP and running now :-)");

            output.append ("\r\n" + sdf.format(Time.getTime()) + "   Unit is UP\r\n " );
            output.close();

            System.exit(0);
        }

        catch (Exception e)
        {
            System.err.println(e);
            output.append (sdf.format(Time.getTime()) +  "    " + e );
            output.close();

        }
    }

}

2 个答案:

答案 0 :(得分:2)

PrintWriter的方法叫做append()并不意味着它改变了正在打开的文件的模式。

您还需要以追加模式打开文件:

此外,您没有在代码中使用printwriter,因此可以将其删除。 试试这个

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import java.text.SimpleDateFormat;
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) throws Exception 
    {

        Writer output; //to write the data into a file 
        String PathOfFile = "/home/pi/boot.log";
        //PrintWriter writer = new PrintWriter(PathOfFile , true /* append = true */)
        output = new BufferedWriter(new FileWriter(PathOfFile , true));
        Calendar Time = Calendar.getInstance(); //get the time 
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy-HH:mm:ss");
        try 
        {
            System.out.println("Hello - the device is UP and running now :-)");
            output.append ("\r\n" + sdf.format(Time.getTime()) + "   Unit is UP\r\n " );
            output.close();

            System.exit(0);
        }

        catch (Exception e)
        {
            System.err.println(e);
            output.append (sdf.format(Time.getTime()) +  "    " + e );
            output.close();
        }
    }
}

答案 1 :(得分:0)

问题是您正在使用PrintWriter实例打开文件,而不是在附加模式中删除内容,之后您使用Writeroutput)来编写内容文件。

<强>解决方案:

只需移除PrintWriter writer = new PrintWriter(PathOfFile);,您就不会在代码中使用它。