Java добавить новую строку в TXT \ файл журнала - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь создать файл журнала для моего 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 голосов
/ 11 июня 2018

Метод 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();
        }
    }
}
0 голосов
/ 11 июня 2018

Проблема в том, что вы открываете файл также с экземпляром PrintWriter, а не в режиме добавления, который удаляет содержимое, и после этого вы пишете с помощью Writer (output) в файл.

Решение:

Просто удалите PrintWriter writer = new PrintWriter(PathOfFile);, вы все равно не используете его в своем коде.

...