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

相關問題