У меня есть код ниже, где я читаю файл из определенного каталога, обрабатываю его и после обработки я перемещаю файл в каталог архива. Это работает нормально. Я получаю новый файл каждый день и использую задание планировщика Control-M для запуска этого процесса.
Теперь при следующем запуске я снова читаю новый файл из этого конкретного каталога и проверяю этот файл с файлом в архивный каталог и, если содержимое отличается, то только обработать файл, иначе ничего не делать. Для этой работы написан сценарий оболочки, и мы не видим никакого журнала для этого процесса.
Теперь я хочу создать сообщение журнала в моем коде java, если файлы идентичны из определенного каталога и в затем запустите директорию архива, чтобы «файлы были идентичны» Но я не знаю точно, как это сделать. Я не хочу писать логи c для обработки или перемещения чего-либо в файле. Мне просто нужно проверить, равны ли файлы и, если это так, создать сообщение журнала. Файл, который я получаю, не очень большой, и максимальный размер может быть до 10 МБ.
Ниже мой код:
for(Path inputFile : pathsToProcess) {
// read in the file:
readFile(inputFile.toAbsolutePath().toString());
// move the file away into the archive:
Path archiveDir = Paths.get(applicationContext.getEnvironment().getProperty(".archive.dir"));
Files.move(inputFile, archiveDir.resolve(inputFile.getFileName()),StandardCopyOption.REPLACE_EXISTING);
}
return true;
}
private void readFile(String inputFile) throws IOException, FileNotFoundException {
log.info("Import " + inputFile);
try (InputStream is = new FileInputStream(inputFile);
Reader underlyingReader = inputFile.endsWith("gz")
? new InputStreamReader(new GZIPInputStream(is), DEFAULT_CHARSET)
: new InputStreamReader(is, DEFAULT_CHARSET);
BufferedReader reader = new BufferedReader(underlyingReader)) {
if (isPxFile(inputFile)) {
Importer.processField(reader, tablenameFromFilename(inputFile));
} else {
Importer.processFile(reader, tablenameFromFilename(inputFile));
}
}
log.info("Import Complete");
}
}