生成语音包前先去Dnew_audio看有没有存在语音包存在了删除 File folder = new FileaudioPath; File files = folderlistFiles;
可以对代码进行如下优化:
- 使用Java 8的Stream API来简化文件遍历和删除操作。
File folder = new File(audioPath);
if (folder.isDirectory()) {
log.info("D:/new_audio/不为空!");
Arrays.stream(folder.listFiles())
.filter(file -> file.getName().contains("_"))
.forEach(file -> {
String[] fileNames = file.getName().split("_");
if (fileNames.length > 1 && fileNames[0].equals(audioFileFirstName)) {
if (file.delete()) {
log.info("文件删除成功!");
if (specificRegularMy.getAudioFileId() != null) {
AudioFile audioFile = audioFileService.queryOneAudioFileByID(specificRegularMy.getAudioFileId());
int ret = audioFileService.deleteOneAudioFileByIdAndName(specificRegularMy.getAudioFileId(), fileNames[1]);
if (ret > 0) {
log.info("数据库语音数据删除成功!");
log.info("需要删除的语音包:" + audioFile);
springToGameService.reloadDeleteAudioFile(audioFile);
} else {
log.info("找不到id:" + specificRegularMy.getAudioFileId() + "文件名:" + fileNames[1] + "的数据库语音数据!");
}
}
} else {
log.error("文件删除失败!");
}
}
});
}
- 使用多线程来提升删除文件的速度。可以将文件删除操作放入一个线程池中并行执行。
File folder = new File(audioPath);
if (folder.isDirectory()) {
log.info("D:/new_audio/不为空!");
ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
Arrays.stream(folder.listFiles())
.filter(file -> file.getName().contains("_"))
.forEach(file -> {
String[] fileNames = file.getName().split("_");
if (fileNames.length > 1 && fileNames[0].equals(audioFileFirstName)) {
executorService.execute(() -> {
if (file.delete()) {
log.info("文件删除成功!");
if (specificRegularMy.getAudioFileId() != null) {
AudioFile audioFile = audioFileService.queryOneAudioFileByID(specificRegularMy.getAudioFileId());
int ret = audioFileService.deleteOneAudioFileByIdAndName(specificRegularMy.getAudioFileId(), fileNames[1]);
if (ret > 0) {
log.info("数据库语音数据删除成功!");
log.info("需要删除的语音包:" + audioFile);
springToGameService.reloadDeleteAudioFile(audioFile);
} else {
log.info("找不到id:" + specificRegularMy.getAudioFileId() + "文件名:" + fileNames[1] + "的数据库语音数据!");
}
}
} else {
log.error("文件删除失败!");
}
});
}
});
executorService.shutdown();
}
这样可以同时删除多个文件,提高删除速度
原文地址: https://www.cveoy.top/t/topic/iKL3 著作权归作者所有。请勿转载和采集!