1 klasaFiles

Do pracy z plikami dostępna jest elegancka klasa narzędzi - java.nio.file.Files. Ma metody na każdą okazję. Wszystkie metody tej klasy są statyczne i operują na obiektach typu Path. Istnieje wiele metod, więc rozważymy tylko te główne:
| metoda | Opis |
|---|---|
|
Tworzy nowy plik ze ścieżkąpath |
|
Tworzy nowy katalog |
|
Tworzy wiele katalogów |
|
Tworzy plik tymczasowy |
|
Tworzy katalog tymczasowy |
|
Usuwa plik lub katalog, jeśli jest pusty |
|
Kopiuje plik |
|
Przenosi plik |
|
Sprawdza, czy ścieżka jest katalogiem, a nie plikiem |
|
Sprawdza, czy ścieżka jest plikiem, a nie katalogiem |
|
Sprawdza, czy obiekt w podanej ścieżce istnieje |
|
Zwraca rozmiar pliku |
|
Zwraca całą zawartość pliku jako tablicę bajtów |
|
Zwraca całą zawartość pliku jako łańcuch |
|
Zwraca całą zawartość pliku jako listę ciągów znaków |
|
Zapisuje tablicę bajtów do pliku |
|
Zapisuje ciąg znaków do pliku |
|
Zwraca kolekcję plików (i podkatalogów) z podanego katalogu |
2. Utwórz pliki i katalogi
Tworzenie plików i katalogów jest bardzo łatwe. Zobaczmy na przykładach:
| Kod | Notatka |
|---|---|
|
Tworzy plik |
|
Tworzy katalog |
|
Tworzy katalog i wszystkie niezbędne podkatalogi, jeśli nie istnieją. |
3. Kopiuj, przenieś i usuń
Kopiowanie, przenoszenie i usuwanie plików jest równie łatwe. Dotyczy to również katalogów, ale muszą być puste.
| Kod | Notatka |
|---|---|
|
Kopiuje plik |
|
Przenosi i zmienia nazwę pliku |
|
Usuwa plik |
4. Sprawdzanie typu i istnienia pliku
Gdy masz ścieżkę podaną z zewnątrz, chciałbyś wiedzieć, czy jest to plik, czy katalog. No ogólnie: czy taki plik/katalog istnieje czy nie?
W tym celu istnieją również specjalne metody. Możesz także łatwo sprawdzić długość pliku:
| Kod | Notatka |
|---|---|
|
|
|
|
|
|
|
|
5. Praca z zawartością pliku
Wreszcie, istnieje cała seria metod, które ułatwiają odczytywanie lub zapisywanie zawartości pliku. Przykład:
| Kod | Opis |
|---|---|
|
Odczytaj zawartość pliku jako listę linii. Wyświetlanie linii na ekranie |
6. Pobieranie zawartości katalogu
Pozostaje najciekawsza metoda - pobieranie plików i podkatalogów w danym katalogu.
Jest do tego specjalna metoda - newDirectoryStream(), która zwraca specjalny obiekt typu DirectoryStream<Path>. Ma iterator (!), a za pomocą tego iteratora możesz pobrać wszystkie pliki i podkatalogi danego katalogu.
Wygląda łatwiej niż wygląda:
| Kod | Opis |
|---|---|
|
Uzyskaj obiekt z listą plików Przejrzyj listę plików w pętli |
Obiekt DirectoryStream<Path>ma dwie właściwości. Po pierwsze, ma iterator, który zwraca ścieżki do plików i możemy użyć tego obiektu wewnątrz pliku for-each.
Po drugie, ten obiekt jest strumieniem danych i musi zostać zamknięty za pomocą metody close()lub użyty wewnątrz try-with-resources.
7. MetodaFiles.newInputStream
Od wersji Java 5 klasy FileInputStreamsą FileOutputStreamuważane za przestarzałe. Jedną z ich wad było to, że kiedy tworzony jest obiekt tych klas, pliki są natychmiast tworzone na dysku. I potencjalnie wszystkie błędy związane z tworzeniem pliku są wyrzucane.
Następnie uznano, że nie jest to najlepsze rozwiązanie. Dlatego do tworzenia obiektów plikowych zaleca się stosowanie metod klasy użytkowej - java.nio.Files.
Oto porównanie starego podejścia do tworzenia plików i nowego:
| Był |
|---|
|
| Stało się |
|
Podobnie zamiennik dla FileOutputStream:
| Był |
|---|
|
| Stało się |
|
GO TO FULL VERSION