В Linux эта тестовая программа надежно удаляет файл «test» в текущем каталоге.(Для меня. На моей машине. Fedora Linux. Java 8.)
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("test");
file.deleteOnExit();
}
}
В Linux единственное, что я могу придумать, чтобы это перестало работать, будет:
- , если текущий пользователь не имел разрешения на удаление файла,
- , если текущий каталог находился в файловой системе, доступной только для чтения, или
- , если JVM потерпел крах, предотвращая «удаление».при выходе «механизм из работы».
В Windows также необходимо учитывать возможность того, что «тестовый» файл был открыт / заблокирован другим приложением.(Или, возможно, этим приложением, но не в этом случае.)
Обратите внимание, что deleteOnExit
не вызовет исключение, если файл не может быть удален, и не будет File.delete()
.Тем не менее, java.nio.file.Files.delete(Path)
вызовет приятное теплое исключение, если по какой-либо причине удаление завершится неудачно.Это может дать вам некоторые подсказки относительно того, что на самом деле происходит.
Если это не помогает, вам нужно предоставить надлежащий автономный MCVE, чтобы другие люди могли испытать их(Windows) машины.
Судя по обновленному коду, проблема заключается в том, что в классе MediaPlayer
открыт файл мультимедиа.Попробуйте позвонить mp.dispose()
до выхода из приложения.