此代碼:FileAlreadyExistsException拋出,並且重寫文件
File tmpFile = File.createTempFile(PREFIX_TMP, null, new File(reportPath));
logger.debug("The report will be saved in the temporary file '{}'", tmpFile.getName());
reportWriter.write(tmpFile, report);
Calendar calendar = Calendar.getInstance();
boolean isFileMoved = false;
while (!isFileMoved) {
String reportName = String.format(report.getName(), calendar.getTime());
File reportFile = new File(reportPath, reportName);
try {
Files.move(tmpFile.toPath(), reportFile.toPath());
isFileMoved = true;
logger.info("The temporary file '{}' is renamed to '{}'", tmpFile.getName(), reportFile.getName());
} catch (FileAlreadyExistsException e) {
logger.warn("The file '{}' already exists in the folder '{}': adding a second to generation time",
reportName, reportPath);
}
calendar.add(Calendar.SECOND, 1);
}
生成以下,是不可能的,登錄的語句:
2016年10月4日10:35:11674 [WARN] [ _Executor-1] abcMyGenerator - 的 文件 'myFile_01092016103511.csv' 已經存在的文件夾 '/ MYDIR' 中:添加第二代時間
2016年10月4日10:35:11677 [WARN ] [_Executor-3] abcMyGenerator - 的 文件 'myFile_01092016103511.csv' 已經存在的文件夾 '/ MYDIR' 中:添加第二代時間
2016年10月4日10:35:11677 [INFO ] [_Executor-1] abcMyGenerator - 的 臨時文件 'tmp2103892505851032137.tmp' 被重命名爲 'myFile_01092016103512.csv'
2016年10月4日10:35:11680 [INFO] [_Executor-3] ABC MyGenerator - 將 臨時文件'tmp6843688962754506611.tmp'更名爲 'myFile_01092016103512.csv'
Executor 3重寫該文件,即使它應該拋出FileAlreadyExistsException。
沒有拋出異常,並且文件的數據已被覆蓋。