项目场景:
使用springBoot实现大文件分片上传,后端生成临时文件后将临时文件替换并删除
问题描述
提示:这里描述项目中遇到的问题:
renameTo直接替换文件失败
if(Objects.equals(fileCountMap.get(fileMd5),chunkCount)) { File tempFile = new File(tempFilePath); File finallyFile = new File(saveDir + File.separator + fileName); if(tempFile.renameTo(finallyFile)){ logger.info("文件替换完成:{}",fileName); }else { logger.info("文件替换失败:{}",fileName); }
原因分析:
使用renameTo方法重命名失败后没有报错,于是改用move方法,显示文件被其他进程调用无法访问。
解决方案:
检查代码后,发现使用randomAccessFile打开文件进行随机读入后没有关闭。所以在重命名之前,将文件关闭。