我正在开发一个媒体播放器应用程序,我想在 JVM 终止后立即删除在运行加密媒体文件后在特定文件夹中创建的解密媒体文件。我尝试使用 deleteOnExit(); 功能,但经过三次尝试后,它不会删除该文件。为什么会发生这种情况?下面是我用来删除文件的代码
@FXML MediaView mv;
MediaPlayer mp;
Media me;
@FXML Slider volumeslider;
@FXML Slider seekslider;
@Override
public void initialize(URL location, ResourceBundle resources) {
try {
String key = "Mary has one cat";
File inputFile = new File("C:\\Users\\Administrator\\Downloads\\video\\ec.mp4");
String path=new File("C:\\Users\\Administrator\\Downloads\\video\\dc.mp4").getAbsolutePath();
try {
CryptoUtils.decrypt(key, inputFile, path);
} catch (CryptoException ex) {
ex.printStackTrace();
}
me=new Media(new File(path).toURI().toString());
mp=new MediaPlayer(me);
mv.setMediaPlayer(mp);
mp.setAutoPlay(true);
DoubleProperty width= mv.fitWidthProperty();
DoubleProperty height= mv.fitHeightProperty();
width.bind(Bindings.selectDouble(mv.sceneProperty(), "width"));
height.bind(Bindings.selectDouble(mv.sceneProperty(), "height"));
volumeslider.setValue(mp.getVolume() * 100);
volumeslider.valueProperty().addListener(new InvalidationListener() {
@Override
public void invalidated(Observable observable) {
mp.setVolume(volumeslider.getValue() / 100);
}
});
mp.currentTimeProperty().addListener(new ChangeListener<Duration>() {
@Override
public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
seekslider.setValue(newValue.toSeconds());
seekslider.maxProperty().bind(Bindings.createDoubleBinding(
() -> mp.getTotalDuration().toSeconds(),
mp.totalDurationProperty()));
File file = new File(path);
file.deleteOnExit();
file.delete();
file = null;
}
});
达令说
宝慕林4294392
相关分类