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 FileInputStream
są FileOutputStream
uważ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