Хранить список в файл в течение определенного времени в Java - PullRequest
0 голосов
/ 14 февраля 2019

Я получаю список данных из службы (данные будут поступать непрерывно), их нужно хранить в файле только в течение 1 минуты, после этого их можно удалить.

Я пыталсясохранить данные в файл, и он работает, ниже приведен пример

private ArrayList<Person> persons = Personservice.getPersons();

FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(persons);
oos.close();

Это запись в файл t.tmp, как и ожидалось, но я не уверен, как записать в файл только в течение 1 минуты

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Я не уверен, как записать в файл только в течение 1 минуты

Моя интерпретация заключается в том, что вы хотите удалить файл через 1 мин.Это можно сделать, используя синхронизированный поток, запущенный вашим текущим потоком:

File file = new File("t.tmp");
new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            Thread.sleep(60 * 1000);
            file.delete();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}).start();

Также обратитесь к встроенному временному файлу API

0 голосов
/ 14 февраля 2019

Вы можете создать задачу таймера после создания файла и настройки его запуска каждые 1 мин.Когда задание будет выполнено и файл будет удален, отмените задание таймера.Пример кода для выполнения каждую минуту: -

    // Your Class
    File file = new File("t.tmp");
    Timer t1 = new Timer();
    t1.schedule(new Test(file), 0,60000);


    class Test extends TimerTask {
    File file;
    public Test (File file) {
         this.file= file;
     }
    public void run() {
    // Delete the file and cancel the task.
    file.delete();
    timer.cancel();
     }
    }
0 голосов
/ 14 февраля 2019

Вы можете сделать это путем сброса файла, если время последнего изменения этого файла превышало одну минуту:

....
File file = new File("t.tmp");
if(System.currentTimeMillis() -file.lastModified() > 60000){
   // code to reset file.
} 
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...