Как освободить файлы после проигрывания MediaPlayer JavaFX

Есть метод initPlayer() который отвечает за сканирование папки с медиа файлами, и ее проигрывания

private void initPlayer() {
            File dir = new File("media/");

            final List<MediaPlayer> players = new ArrayList<>();
            File folder = new File(String.valueOf(dir));
        ArrayList<File> listofFiles = new ArrayList<>(Arrays.asList(Objects.requireNonNull(folder.listFiles())));
            File file;// = null;
        for (File listofFile : listofFiles) {
            file = new File(listofFile.getName());
            System.out.println(file.toString());

            players.add(new MediaPlayer(new Media(new File(dir + "/" + file).toURI().toString())));
        }

            mediaView = new MediaView(players.get(0));
            mediaView.setX(0);
            mediaView.setY(0);

            for (int j = 0; j < players.size(); j++) {
                final MediaPlayer player = players.get(j);
                final MediaPlayer nextPlayer = players.get((j + 1) % players.size());
                player.setOnEndOfMedia(() -> {
                    mediaView.setMediaPlayer(nextPlayer);
                    nextPlayer.play();
                    System.out.println(nextPlayer.getStatus().toString());
                    System.out.println(player.getStatus().toString());

                    if (nextPlayer.getStatus().toString().equals("PLAYING")){//если плейлис дошел до  конца, делаем перезапуск метода

                        initPlayer();
                    }

                });


            }

            mediaView.setMediaPlayer(players.get(0));

            mediaView.getMediaPlayer().play();
            root.getChildren().addAll(mediaView);
        }

Все работает хорошо, но проблема заключается в том, что когда запущенна программа, я не могу удалить никакой из этих файлом (система ругается на то, что файл используется). Как можно сделать, чтобы после проигрования, файл больше не использовался?


Ответы (0 шт):