lsof查看号好多临时文件,磁盘空间
大佬们有什么解决方案
文化后面那个 deleted
标识,好像是文件已经被删除,但是句柄一直引用存在所以一直没删除成功。
上传文件,记得在final里面关闭读取流。
可以贴一下上传代码,看看。
for(MultipartFile file:fileList){
//将文件遍历上传到oss上
try {
BladeFile inOutPic = ossService.putFile(null,serverPath,file.getOriginalFilename(),file);
if(inOutPic == null){
//上传失败,需要记录下来失败的数据
errorPicList.add(file.getOriginalFilename());
}
}catch (Exception ex){
if(success){
resCode = "-1";
success = false;
resMessage = "有图片未上传成功,请重试!";
}
errorPicList.add(file.getOriginalFilename());
continue;
}
}
public BladeFile putFile(String bucketName, String filePath, String fileName, MultipartFile file) {
if (StringUtil.isBlank(fileName)) {
fileName = file.getOriginalFilename();
}
InputStream stream = file.getInputStream();
BladeFile bladeFile = putFile(bucketName, filePath, fileName, 0, stream);
// 使用完关闭文件流
stream.close();
return bladeFile;
}
public BladeFile putFile(String bucketName, String filePath, String fileName, long fileLength, InputStream stream) {
client.putObject(bucketName, fileName.substring(1), stream);
BladeFile file = new BladeFile();
file.setOriginalName(fileName);
file.setName(fileName);
file.setLink(this.fileLink(bucketName, fileName));
return file;
}
在finaly里面关闭试试看。
public void upload (MultipartFile[] multipartFiles) {
for (MultipartFile file : multipartFiles) {
try {
// TODO
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这按道理来说,Undertow应该会自动释放的。我也不确定是啥问题导致的。
可以通过Linux命令查看文件句柄的线程ID,把线程dump下来看看。根据进程ID,找找,到底是哪里占用了文件。
需要订阅?裂开了
请假一下 这个问题解决没
请问下问题解决了吗