0

我正在使用以下代码来写入S3存储桶,该存储桶现在有很多xml文件。设备出现错误时,我收到了空间不足。随后的上传失败。我看到很多文件在var/cache/tomcat8/temp文件夹中创建。我正在通过我的代码删除文件。有人能帮我理解这里出了什么问题吗?实际上我们希望在我们上传到S3时立即删除临时文件。AWS S3上的设备上没有剩余空间tomcat 8

Path path = Files.createTempFile(filename, suffix); 
file = path.toFile(); 

Files.write(path, incomingXml.getBytes(StandardCharsets.UTF_8)); 

if(file!=null){ 
    file.deleteOnExit(); 
} 
s3client.putObject(new PutObjectRequest(fullBucketPathByDate, filename, file)); 
LOGGER.info("Upload completed"); 

回答

0

File.deleteOnExitdocs(重点煤矿):当所述虚拟机终止该文件或此抽象路径名 表示目录中删除

请求。

这意味着临时文件只会在关闭Tomcat进程后被删除。您需要做的就是在完成将文件上传到S3后立即删除该文件。类似这样的:

Path path = Files.createTempFile(filename, suffix); 
file = path.toFile(); 

Files.write(path, incomingXml.getBytes(StandardCharsets.UTF_8)); 

if(file!=null){ 
    s3client.putObject(new PutObjectRequest(fullBucketPathByDate, filename, file)); 
    file.delete(); 
} 
LOGGER.info("Upload completed"); 

或者,查看流文件内容直接到S3而不使用临时文件。

+0

感谢您的帮助! – Twisha

相关问题