Java: praca z plikami - zapisuj, czytaj, usuwaj

Java ma wiele narzędzi do obsługi plików, ponieważ służą one jako hurtownia danych w wielu aplikacjach. Często dostęp do plików jest wymagany w Java Java. Wszystkie klasy do pracy z plikami znajdują się w pakiecie java.io, który również przechowuje klasy do pracy ze strumieniami wejściowymi i wyjściowymi. Ściśle mówiąc, w Javie praca z plikami wynika głównie ze strumieni wejściowych i wyjściowych bajtów i znaków. Wyjątkiem jest klasa File. Zacznijmy od tego.

Plik klasy Java - praca z plikami

Plik klasy współdziała bezpośrednio z plikami i plikami. Instancja tej klasy służy przede wszystkim do uzyskiwania dostępu do właściwości plików i przechodzenia przez hierarchie podkatalogów. Nie definiuje sposobów wyodrębniania i zapisywania danych w pliku, ale dzięki tej klasie można uzyskać wiele informacji o pliku, dacie, godzinie, uprawnieniach i ścieżce do katalogu. W rzeczywistości klasa File jest specyficzną dla obiektu interpretacją pliku lub katalogu w Javie.


Aby utworzyć instancję klasy File, użyj jednego z jej konstruktorów: File (ścieżka do folderu, nazwa pliku String). Rozważ podstawowe metody tej klasy, które umożliwiają uzyskanie informacji o pliku lub katalogu:
  • getName () - zwraca nazwę pliku;
  • istnieje () - zwraca wartość logiczną prawda, jeśli plik istnieje, lub false w przeciwnym razie;
  • isFile () - definiuje, określa obiekt do pliku, zwracając odpowiednią wartość logiczną;
  • isDirectory () - zwraca wartość true, jeśli jest to folder;
  • canWrite () - zwraca true, jeśli plik jest dostępny do zapisu;
  • canRead ()- zwraca true, jeśli plik jest czytelny;
  • setReadOnly () - sprawia, że ​​plik jest dostępny tylko do odczytu;
  • length () - zwraca rozmiar pliku w bajtach;
  • renameTo (File new name) - zmienia nazwę pliku zgodnie z przekazanym argumentem. Zwraca wartość true, jeśli operacja zakończyła się pomyślnie;
  • delete () - Usuwa plik lub folder (jeśli jest pusty) wskazany przez obiekt wywołujący;
  • list () - wypakowuje listę nazw obiektów przechowywanych w tym katalogu jako tablicę łańcuchów (dotyczy tylko katalogów).
  • Zatem użycie klasy File zapewnia pracę w Javie z plikami i folderami.


    Praca z plikami przy użyciu klas FileInputStream i FileOutputStream

    Wspominaliśmy, że w Javie praca z plikami odbywa się głównie przy użyciu strumieni We /Wy. Strumienie bajtów do pracy z plikami są reprezentowane jako klasy FileInputStream i FileOutputStream. Te klasy są spadkobiercami podstawowych klas abstrakcyjnych odpowiednio InputStream i OutputStream, więc metody tych klas są dostępne do pracy z plikami. Najpierw rozważ FileInputStream. Projektanci tej klasy przedstawiono na poniższym rysunku:
    Pierwszy konstruktor przyjmuje jako argument ścieżkę do żądanego pliku w postaci ciągu, a drugi - w postaci reprezentacji obiektu. Chociaż pierwszy konstruktor jest częściej używany, w drugim przypadku możliwe jest zbadanie właściwości pliku dostępnego w metodach klasy File. Podczas tworzenia instancji klasy FileInputStream otwiera strumień wejściowy do odczytu pliku.
    Konstruktory klas FileOutputStream przedstawiono poniżej:
    Sytuacjapodobna do FileInputStream, ale może również przyjmować wartość logiczną „dołączyć”, który po true wskazuje, że dane wynikające zapisu pliku dopysuvatysya do istniejących, a jeśli false - pójdzie pełne zastąpienie pliku, czyli stare dane zostaną utracone . Spójrzmy na przykład używając tych klas:
    Strumień wejściowy
    FileInputStream odczytuje dane z pliku file1.txt pobaytovo pomocą metody odczytu (). Każdy odczytany bajt jest przechowywany w całkowitej liczbie całkowitej. Następnie w pętli natomiast zmienna przekazywana jako argument do metody kopii napisać FileOutputStream, który pisze bajtów odebranych w file2.txt plików. Na końcu obu wątków zamknięcie obowiązkowe zamyka się metodą zamykania.

    Klasy FileReader i FileWriter

    Jeśli oczywiście wiedzieć, że podczas pracy z plikami masz do czynienia z tekstem, zamiast strumieni bajtowych sens używać znaku. Te wątki są reprezentowane przez klasy FileReader i FileWriter w Javie. Praca z plikami używającymi tych klas jest z grubsza taka sama jak w poprzednim przypadku. Są potomkami klas Reader i Writer, które definiują podstawowe metody dla danych wejściowych i wyjściowych. Projektanci klas FileReader i FileWriter przedstawiono na poniższym rysunku:
    Zgadzam się, praktycznie nie ma różnic w semantykach w porównaniu ze strumieniami bajtów. Najważniejsze jest to, że te klasy zostały specjalnie zaprojektowane do pracy ze znakami w Unicode, których nie można wykonywać strumieniami bajtów. W ten sposób organizowane są pliki Java. Przykład użycia tych klas znajduje się poniżej:
    Jak widać,nie zaobserwowano różnic. Warto zauważyć, że chociaż strumienie są symboliczne, to metoda read zwraca, a metoda zapisu przyjmuje wartość całkowitą. Chociaż metoda podpis obejmuje otrzymywanie zapisu argumenty typu int, napisane do strumienia tylko dolna 16 bitów jako znaki w Javie reprezentowana jest tak wiele bitów.

    Wniosek

    Zdemontowaliśmy więc podstawowe klasy do pracy z plikami w Javie. Warto zauważyć, że jeśli zamierzasz rozwijać Javę z Androida, możesz bezpiecznie korzystać z tego zestawu narzędzi.

    Powiązane publikacje