Próbuję usunąć plik JAR za pomocą języka Java 5 (dlatego interfejs API ścieżek wprowadzony w języku Java 7 nie jest dostępny).Nie rozumiem działania obiektu File object.delete()
Mój kod:
String sep = File.separator;
File test = new File("."+ sep + "server" + sep + "lib" + sep + "testJar.jar");
if(test.delete())
{
logger.log(Level.INFO,test.getName() + " deleted.");
}
else
{
logger.log(Level.INFO,"Delete operation is failed for "+test.getName());
}
Kiedy mój kod zostanie wykonany plik jar zostanie usunięty, ale Delete operation is failed for testJar.jar
jest drukowany w logs.Cant zrozumieć why..any pomoc jest mile widziana.
UPDATE: Próbowałem ponownie ten sam kod i tym razem mówi testJar.jar deleted
teraz jestem zdezorientowany co się dzieje
Prawdopodobnie plik JAR jest otwarty przez kogoś takiego jak na przykład JVM. Możesz spróbować użyć 'deleteOnExit', który spróbuje usunąć plik, gdy JVM zakończy się normalnie, ale prawdopodobnie nadal nie będzie działać. Wierzę, że Java 7 koryguje ten problem, ponieważ 'Classloader' zamyka Jar, kiedy skończy czytać ... – MadProgrammer
Użyj' Files.delete (Path) '- który zgłasza wyjątek, zamiast zwracać wartość' boolean'. Aby uzyskać 'Path', użyj' File.toPath' dla 'Paths.get'. To powinno dać opisowy błąd. –
@BoristheSpider Dzięki za wskazówkę. Nio został wprowadzony w java 7, a ja jestem ograniczony do pracy z java5..nie sugestie na to? – amudhan3093