问题遇到的现象和发生背景
java从minio下载大文件到磁盘目标位置,未下载完成时后缀使用.tmp,下载完成后修改文件名后缀
问题相关代码,请勿粘贴截图
public Boolean downloadFileToLocalCache(String protocol, File file, String pathWithoutExtension) {
try{
String tmpPath = pathWithoutExtension + TMP_EXT;
File tmpFile = new File(tmpPath);
if (!tmpFile.exists() && storeService.exists(protocol)) {
try (InputStream in = storeService.getInputStream(protocol);
FileOutputStream out = new FileOutputStream(tmpFile)) {
IOUtils.copy(in, out);
}
tmpFile.renameTo(file);
}
} catch (Exception e){
log.warn("将材料缓存到服务器本地异常", e);
}
return true;
}
运行结果及报错内容
目前只有流关闭时才会写入磁盘,或者先写入一个0kb文件,流关闭时才会改变文件大小
我的解答思路和尝试过的方法
换过使用BufferedOutputStream等其他流输出,或者自己写循环,并且添加os.flush()均没有效果
我想要达到的结果
期望文件可以实时写入磁盘,并且文件大小也实时变化