Я использую FileUtils.saveAndUnzipToTempDir
для распаковки папки / файлов во временный каталог, и я хочу удалить эту папку, как только я закончу просматривать папку.
У меня нет большого опыта Java, но я думаю, что процесс saveAndUnzipToTempDir
еще не закончен, и не знаю, как ждать, пока процесс завершится, или как его убить:
Это мой код:
public boolean postFile(@RequestParam String filename, @RequestParam MultipartFile file) {
FileResultsDTO fileResultsDTO = FileUtils.saveAndUnzipToTempDir(file, filename);
for(String fileName : fileResultsDTO.getUnzipDir().list()){
// do something.
}
//Find the temp folder where the other files/folders are uploaded and
//deleted those
File directory = new File(FileUtils.getTempDirectoryPath());
FileUtils.deleteDirectory(directory);
FileUtils.forceDelete(directory);
delete(directory);
}
public static void delete(File file)
throws IOException {
if(file.isDirectory()){
//directory is empty, then delete it
if(file.list().length==0){
FileDeleteStrategy.FORCE.delete(file);
FileUtils.deleteQuietly(file);
file.delete();
System.out.println("Directory is deleted : "
+ file.getAbsolutePath());
}else{
//list all the directory contents
String files[] = file.list();
for (String temp : files) {
//construct the file structure
File fileDelete = new File(file, temp);
//recursive delete
delete(fileDelete);
}
//check the directory again, if empty then delete it
if(file.list().length==0){
FileDeleteStrategy.FORCE.delete(file);
FileUtils.deleteQuietly(file);
file.delete();
System.out.println("Directory is deleted : "
+ file.getAbsolutePath());
}
}
}else{
//if file, then delete it
FileDeleteStrategy.FORCE.delete(file);
FileUtils.deleteQuietly(file);
file.delete();
System.out.println("File is deleted : " + file.getAbsolutePath());
}
}
Итак, если вы внимательно посмотрите код, вы увидите, что я тоже пытался использовать:
FileDeleteStrategy.FORCE.delete(file);
FileUtils.deleteQuietly(file);
file.delete();