Файлы создаются со старыми данными в Java - PullRequest
0 голосов
/ 24 сентября 2019

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

Что я здесь не так делаю?

private File createFile() {
    logger.trace("Entering createFile method ");
    File trackerFile = new File("tracker.txt");
    if (!trackerFile.exists()) {
        try {
            logger.debug("File does not exist . New file being created ");
            trackerFile.createNewFile();                
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        try {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            String dateCreated = df.format(this.getCreationTime(trackerFile).toMillis());
            logger.debug("File exists file creation time is {}" , dateCreated);
            Calendar currCalendar = Calendar.getInstance();
            Calendar fileCreateCalendar = Calendar.getInstance();
            fileCreateCalendar.setTime(df.parse(dateCreated));
            if (currCalendar.get(Calendar.DAY_OF_MONTH) > fileCreateCalendar.get(Calendar.DAY_OF_MONTH)) {
                logger.debug("File exists file not created today , being deleted");
                trackerFile.delete();
                trackerFile.createNewFile();
            }
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
    logger.trace("Exiting createFile method ");
    return trackerFile;
}

Пожалуйста, ознакомьтесь с этим простым фрагментом кода ... файл создан, удален и затем воссоздан.Файл, созданный в конце, имеет дату создания, которая совпадает с первым файлом, который был удален.Как это происходит?

public class CreateTempFile {
    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            file.createNewFile();
            file.delete();
            File newFile = new File("test.txt");
            newFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Я нашел ответ в более старом посте, ссылка приведена ниже.

После удаления файла и повторного создания файла не изменяйте дату создания в windows

0 голосов
/ 24 сентября 2019

Я бы предложил вам использовать аналогичный код для получения даты / времени, чтобы быть уверенным, что вы получаете правильное значение (например, создание не является модификацией и т. Д.):

Path file = "tracker.txt";
BasicFileAttributes fileAttributes = Files.readAttributes(file, BasicFileAttributes.class);

System.out.println("creationTime: " + fileAttributes.creationTime());
System.out.println("lastAccessTime: " + fileAttributes.lastAccessTime());
System.out.println("lastModifiedTime: " + fileAttributes.lastModifiedTime());

Вы можете найти большеПодробности в ссылке здесь: https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...