Я провожу некоторый тест, чтобы доказать концепцию, и я просто написал этот код и обнаружил странную ситуацию:
public class Test {
public static void main(String[] args) {
Date now = new Date();
File file = new File("/root/batch-experiments/test.txt");
try {
file.createNewFile();
} catch (IOException e) {
System.out.println("cannot create file...");
}
System.out.println(MessageFormat.format("Checking File {0}! Last Modified time is {1}. Must be newer than {2}", file.getName(),
file.lastModified(), now.getTime()));
if (file.lastModified() >= now.getTime()) {
//ignore...
} else {
System.out.println(MessageFormat.format("File {0} is out of date and was ignored.", file));
}
}
}
Вывод:
Checking File test.txt! Last Modified time is 1,253,187,650,000. Must be newer than 1,253,187,650,496
File /root/batch-experiments/test.txt is out of date and was ignored.
Как это возможно?
Не должно ли быть время изменения файла после новой даты?
Это происходит 1 в 4/5 попыток.
Что мне здесь не хватает?
Любой способ гарантировать, что новый Date () старше, чем создание файла?