JavaFX MediaPlayer 不释放文件句柄

2024-01-12

我知道这可能是重复的。我之前检查过其他问题,但没有成功解决我的问题。我正在尝试使用 javafx 构建某种即时按钮应用程序。有时我使用以下代码播放文件:

if(mediaPlayer != null){
    mediaPlayer.stop();
}
File soundFile = new File(Config.getInstantSoundsDirectory() + File.separator + fileName);
Media mediaFile = new Media(soundFile.toURI().toString());
mediaPlayer = new MediaPlayer(mediaFile);        
mediaPlayer.setOnEndOfMedia(() -> mediaPlayer.dispose());
mediaPlayer.play();

如果我想删除文件,我使用以下代码:

try {
    Files.deleteIfExists(Paths.get(Config.getInstantSoundsDirectory(), fileName));
} catch (IOException e1) {      
    e1.printStackTrace();
} 

如果我以前从未播放过该文件,它就可以工作。如果我这样做了,我会得到一个异常,说我无法删除它,因为其他进程正在使用它。根据其他帖子,从文件中删除文件句柄的解决方案是在我的 mediaPlayer 上调用 dispose() ,就像我在播放文件时所做的那样。不幸的是错误仍然存​​在。我可能错过了什么吗?

感谢您的帮助。

问候离子

编辑 -> 这是我的示例测试代码:

String filePath = Paths.get(".", "test.mp3").toString();
File soundFile = new File(filePath);
Media hit = new Media(soundFile.toURI().toString());
player = new MediaPlayer(hit);
player.setOnEndOfMedia(() -> {
    player.dispose();
    try {
        Files.deleteIfExists(Paths.get(".", "test.mp3"));
    } catch (IOException e) {       
        e.printStackTrace();
    }
});
player.play();

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX MediaPlayer 不释放文件句柄 的相关文章

随机推荐