Избегайте устаревших классов даты и времени
Вы смешиваете проблемные устаревшие классы даты и времени, такие как SimpleDateFormat
и Date
, с их современными заменами в java .time * 1006. * пакеты. Не делай этого. Используйте только классы java .time .
Имя файла
Я предлагаю использовать стиль именования файлов ISO 8601 . Текст в этих форматах при сортировке в алфавитном порядке будет в хронологическом порядке.
Очевидно, вы хотите только год и месяц для имени файла. Стандарт ISO 8601 для этого - ГГГГ-ММ.
Для получения текущего года-месяца требуется часовой пояс. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Если текущий момент близок к концу / началу месяца, год-месяц может быть в следующем месяце в одном месте, а в последний месяц - в другом.
ZoneId z = ZoneId.of( "America/Montreal" ) ;
YearMonth yearMonth = YearMonth.now( z ) ; // Get current year-month as seen in a particular time zone.
Сделать имя файла текстовым.
String fileName = yearMonth.toString() + ".csv" ;
Чтобы сгенерировать текст, представляющий дату и время суток, используйте ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
String output = zdt.toString() ;
Вы можете получить YearMonth
с этого момента.
YearMonth yearMonth = YearMonth.from( zdt ) ;
Существование файла
Очевидно, вы хотите создать файл, только если он еще не существует.
Java имеет несколько устаревших классов для работы с файлами, таких как java.io.File
. И Java имеет более новый, более современный набор классов для файлов и ввода / вывода, который называется «NIO» (неблокирующий ввод / вывод) . См. Oracle Учебное пособие .
String filePathString = "/Users/basilbourque/" + fileName ;
Path path = Paths.get( filePathString );
if ( Files.exists(path) ) {
… do nothing
}
if ( Files.notExists(path) ) {
… proceed with creating new file
}
CSV
Создание CSV-файлов многократно освещалось при переполнении стека. Поиск, чтобы узнать больше.
Я предлагаю использовать библиотеку, чтобы облегчить рутинную работу по генерации или синтаксическому анализу CSV или файлов с разделителями табуляции. Я хорошо использовал Apache Commons CSV . И есть и другие.
Я сам поделился примером демонстрации написания файлов CSV здесь , здесь , здесь и, вероятно, других .
Загрузка / выключение машины
Приложение запускается, если я включаю компьютер.
Дата и время должны быть сохранены. Это также необходимо проверить если эта текущая дата существует. Я хочу сохранить дату и время включения и выключения.
Я не могу вам там помочь. Я не знаю, как подключиться к загрузке / выключению через Java. Я полагаю, вы могли бы написать сценарий оболочки для вызова вашего Java приложения. Затем настройте какой-либо механизм, определяемый ОС c, для запуска сценария оболочки в соответствующее время.