我知道这可能是重复的。我之前检查过其他问题,但没有成功解决我的问题。我正在尝试使用 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(使用前将#替换为@)