To niesamowite że Java została jednym z najpopularniejszych języków programowania wysokiego poziomu, mimo że wsparcie dla niektórych typowych zadań programistycznych jest bardzo prymitywne i wymaga napisania sporo kodu. Do niedawna jednym z takich obszarów była obsługa systemu plików. Tak typowe (i z pozoru proste) zadania jak skopiowanie pliku, albo rekurencyjne usunięcie katalogu było mozolne jak ręczne przepisywanie ksiąg w średniowieczu.
Na szczęście w Java 7 (czyli aż 15 lat od wydania JDK 1.0!) w końcu pojawiło się nowe API, które daje dużo większe możliwości niż klasa java.io.File. Są to dwa nowe pakiety:
API to pozwala na wykonanie takich zadań jak wspomniane już kopiowanie plików, przenoszenie do innego katalogu, rekurencyjne usunięcie katalogu, utworzenie tymczasowego katalogu, czy modyfikacja atrybutów pliku typowych dla systemu plików, takich jak POSIXowe uprawnienia albo Windowsowe atrybuty plików.
Nie będę tu szczegółowo opisywał użycia tego API, bo myślę że każdy sobie może przczytać Javadoca na stronie Oracle'a.
Co ciekawe, nowe API nie korzysta z klasy java.io.File, lecz wprowadza nową klasę będącą abstrakcją ścieżki w systemie plików: interfejs java.nio.file.Path. Różni się on od java.io.File przede wszystkim tym, że jest specyficzny dla systemu plików. Obiekt Path można najprościej uzyskać metodą Paths.get()
Myślę że spowoduje to sporo zamieszania w kodzie wielu projektów. W nowym kodzie zapewne pojawią się odwołania do Path, natomiast stare API będzie korzystać z File. Na szczęście istnieje łatwy sposób konwersji pomiędzy obiektami File i Path za pomocą metod Path.toFile() oraz File.toPath().
Brak komentarzy:
Prześlij komentarz