我正在尝试为我的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();
}
}
}
答案 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
实例打开文件,而不是在附加模式中删除内容,之后您使用Writer
(output
)来编写内容文件。
<强>解决方案:强>
只需移除PrintWriter writer = new PrintWriter(PathOfFile);
,您就不会在代码中使用它。