gradle mp3agic library java.io.IOException:无法从\Tomcat\localhost\ROOT\file.tmp删除临时mp3文件

lrl1mhuk  于 2023-03-23  发布在  Java
关注(0)|答案(1)|浏览(479)

代码运行得很好,但我得到了这个异常:

Caused by: java.io.IOException: Cannot delete 
C:\Users\noob234\AppData\Local\Temp\tomcat.8080.5659248991534133251\work\Tomcat\localhost\ROOT\upload_1723fa92_3db6_497a_9bdc_ac298b991fc8_00000000.tmp

我试图以某种方式删除它或只是添加一个睡眠一秒钟,但不幸的是,我不能摆脱它。
我试图从一个多部分文件中获取一些字段。该多部分文件是一个mp3文件。下面是代码片段:

public void upload (MultipartFile file){
// ....

String fileName = file.getOriginalFilename();
if ("mp3".equals(extension)) {
            try {
                Mp3File mp3file = new Mp3File(fileName);
                sampleRate = mp3file.getSampleRate();
            } catch (Exception e) {
                throw new Mp3Exception("Couldn't get mp3 fields: " + e.getMessage())
            }
    }

// ....

请记住,我在这个项目中使用Java 8和Gradle。下面是我使用的依赖项:

implementation 'com.mpatric:mp3agic:0.9.1'
tzxcd3kk

tzxcd3kk1#

已修复:

implementation 'org:jaudiotagger:2.0.3'
public void upload(MultipartFile file){
        // ....
        String fileName = file.getOriginalFilename();
        if ("mp3".equals(extension)) {
            try {
                File tempFile = File.createTempFile("temp", ".mp3");
                file.transferTo(tempFile);
                AudioFile audioFile = AudioFileIO.read(tempFile);
                sampleRate = audioFile.getAudioHeader().getSampleRateAsNumber();
                duration = audioFile.getAudioHeader().getTrackLength();
            } catch (Exception e) {
                throw new Mp3Exception("Couldn't get mp3 fields: " + e.getMessage())
            }
        }
        // ....
    }

相关问题