Я тестировал такие файлы:
public Date findFileDate(){
File file = new File(filePath);
Date date = new Date(file.lastModified());
return date;
}
Когда я печатаю date
он говорит: Wed Dec 31 19:00:00 EST 1969
. После некоторых исследований я обнаружил, что это мое "время с момента Unix Epoch" в соответствии с моим часовым поясом, но я смущен, почему я получаю этот вывод, если в моем filePath
файле нет файла. Зачем ему не возвращать null
или 0
?
Нет, file.lastModified()
возвращает 0. То, что эпоха Unix
В вашем конкретном часовом поясе (восточные США по внешнему виду) местное время в эпоху Unix составляло 5 часов по сравнению с UTC, так что было 7 вечера 31 декабря 1969 года.
Чтобы подтвердить это, просто разделите свою декларацию и присвоение Date
на две части:
long lastModifiedMillis = file.lastModified();
Date date = new Date(lastModifiedMillis);
Теперь, если вы посмотрите lastModifiedMillis
я уверен, вы найдете значение 0, так как документально:
Возвращает
long
значение, представляющее время последнего изменения файла, измеренное в миллисекундах с эпохи (00:00:00 GMT, 1 января 1970 г.) или0L
если файл не существует или возникает ошибка ввода-вывода