我正在尝试编写一个实用程序函数来保存我们的应用程序中使用的文件夹。以下是该功能的定义。
public static void housekeepFiles(File directoryToHouseKeep, Predicate<File> predicate, Logger logger, BatchLoggerService batchLoggerService){
if(directoryToHouseKeep == null) throw new IllegalArgumentException("directoryToHouseKeep cann't be null");
if(logger != null) logger.info("Housekeeping the folder: " + directoryToHouseKeep.getAbsolutePath());
File[] files = directoryToHouseKeep.listFiles();
for(File file : files){
boolean b = predicate.test(file);
if(logger != null) logger.info("File should be house kept: " + b);
if(predicate.test(file)){
try {
Files.delete(file.toPath());
} catch (IOException e) {
if(logger != null) logger.error("Error while deleting the file: " + file.getAbsolutePath(), e);
if(batchLoggerService != null) batchLoggerService.error("Error while deleting the file: " + file.getAbsolutePath() + " because of: " + e.getMessage());
}
}
}
}
我面临的问题是每次执行中的日志记录都会有所不同。平均呼叫者想要实现不同类型的日志记录(要打印的消息)。
我正在考虑提供两个Consumer API(Java 8 lambda),以便调用者可以实现实际的日志记录。但我希望消息具有单个文件状态(文件路径以及是否删除)的状态以使用日志消息打印。如果我提供功能接口,是否有任何方法可以在本地功能范围(文件)中提供要提供给调用者的变量。这样他就可以构建整个信息。
我知道这听起来很愚蠢,但只是检查任何可能性?
感谢您的建议。