W tym artykule zawiera podstawowe wyjaśnienie, jak czytać tekst lokalny i bajty w Javie. Aby odczytać plik tekstowy, użyj klasy, FileReader. Aby odczytać plik bajtów, użyj klasy, FileInputStream. Obie klasy są w Javie.io.* Pakiet, który należy zaimportować. Pierwsza połowa tego artykułu dotyczy czytania plików tekstowych, a druga połowa dotyczy czytania plików bajtów.
Czytanie plików tekstowych
Konstruowanie obiektu FileReadera
Przed dowiedzieć się, jak budować obiekt FileReader, utwórz następujący plik tekstowy z edytorem tekstu i naciśnij klawisz Enter na końcu dwóch pierwszych wierszy:
Tekst 1 a tekst 1 a tekst 1 a tekst 1 a tekst 1
B Tekst 2 B Tekst 2 B Tekst 2 B Tekst 2 B Tekst 2
C Text 3 C Tekst 3 C Tekst 3 C Tekst 3 C Tekst 3
Jeśli klawisz ENTER nie jest naciskany na końcu ostatniego wiersza, edytor tekstu może dodać nową linię po zapisaniu pliku. Po wyprodukowaniu poprzedniego tekstu zapisz treść, za pomocą temperatury nazwy.TXT, za pomocą menu edytora tekstu, użytkownika@host: ~/dir1 $, w katalogu. Oznacza to, że katalog, DIR1, powinien zostać stworzony.
Konstruowanie czytnika plików
Klasa FileReader ma pięć konstruktorów. Tylko jeden jest zilustrowany w tym artykule (aby artykuł był krótki). Składnia konstruktora to:
Public FileReader (nazwa pliku ciągów) rzuca FillenotFoundExceptionJest to tworzone w pamięci strumień (kopia) pliku, którego ścieżka i nazwa to ciąg, nazwa pliku. Rzuca FillenotFoundException, jeśli plik nie zostanie znaleziony we wskazanym katalogu. Po skopiowaniu zawartości pliku otwarty obiekt pliku musi zostać zamknięty, aby zwolnić wszelkie zasoby systemowe powiązane z otwartym plikiem.
Ważne metody FileReadera
Jeśli konstruktor zostanie pomyślnie utworzony, plik jest uważany za otwarty. Po użyciu pliku plik musi zostać zamknięty. Składnia do zamykania pliku to:
public void close () rzuca ioExceptionPo właśnie otwarciu pliku skuteczne odczyt pliku nie nastąpiło jeszcze. Aby przeczytać jedną postać na raz (po drugiej), zastosuj składnię metody FileReadera:
public int read () rzuca ioExceptionZwraca to znak (jako liczbę całkowitą) odczyt lub -1 Jeśli osiągnięto koniec strumienia (przepływ kopii pliku).
Aby odczytać następną sekwencję znaków pliku, do tablicy, zastosuj składnię metody FileReader:
public int Read (Char [] cbuf, int off, int len) rzuca ioExceptionZwraca liczbę znaków odczytu lub -1, jeśli osiągnięto koniec strumienia. WYŁ. W składni oznacza przesunięcie. Jest to indeks w pliku, w którym odczyt następującej sekwencji znaków ma się rozpocząć. Len to liczba znaków do przeczytania. Powinna to być długość tablicy, podczas gdy CBUF jest tablicą. Sekwencja znaków jest odczytywana.
Pamiętaj, że obiekt FileReader musi zostać zamknięty metodą zamknięcia po tym skutecznym odczytaniu.
Składnia metody, aby wiedzieć, czy następny odczyt nie zwróci -1, to:
Public Boolean Ready () rzuca ioExceptionZwraca prawdę, jeśli jest coś do odczytania, a w przeciwnym razie fałszywe.
Czytanie w ciągu
Poniższy kod odczytuje poprzedni plik, znak po charakterze, do ciągu StringBuilder:
StringBuilder sb = nowy StringBuilder ();Kod zaczyna się od instancji obiektu StringBuilder, SB. Następnie jest konstrukt próba. Block trybu zaczyna się od tworzenia instancji FileReadera, fr. I jest pętla pobytu, która iteruje, aż Ready () zwróci false. Pierwsze stwierdzenie w pętli while odczytuje i zwraca następną postać jako liczbę całkowitą. Musi zostać obsadzony na Char. Następna instrukcja w While pętli dołącza następny znak do ciągu, SB. Wyjście to:
Tekst 1 a tekst 1 a tekst 1 a tekst 1 a tekst 1Jest to dokładnie treść pliku, ale dodała dodatkową linię na komputerze autora.
Czytanie w tablicy
Czytając w tablicy, zawartość tablicy musi zostać wydana, aby następna sekwencja znaków zostanie przeczytana. Poniższy kod to ilustruje:
StringBuilder sb = nowy StringBuilder ();Wartość przesunięcia należy zwiększyć dla każdej iteracji o długość tablicy. Wyjście to:
Tekst 1 a tekst 1 a tekst 1 a tekst 1 a tekst 1Jest dokładnie taka jak zawartość pliku, ale dodała dodatkową linię na komputerze autora.
Czytanie plików bajtów
Konstruowanie obiektu FileInputStream
Poniższy plik obrazu nazywa się słupkami.png. Jest w katalogu użytkownika@host: ~/dir1 $, który jest tym samym katalogiem co temp.tekst. Składa się z zaledwie trzech barów:
Konstruowanie plikuInputStream
Konstruktor obiektu FileInputStream to:
public FileInputStream (nazwa ciągu) rzuca FillenotFoundExceptionPonieważ rzuca wyjątek, powinien być w konstrukcji Try-Catch. Pamiętaj, że ta klasa jest przeznaczona do czytania bajtów.
Ważne metody FileInputStream
Jeśli konstruktor zostanie pomyślnie utworzony, plik jest uważany za otwarty. Po przeczytaniu bajtów plik musi zostać zamknięty, stosując następującą składnię:
public void close () rzuca ioExceptionPo właśnie otwarciu pliku skuteczne odczyt pliku nie nastąpiło jeszcze. Aby przeczytać jeden bajt na raz (jeden, następny), zastosuj składnię metody FileInputStream:
public int read () rzuca ioExceptionZwraca bajt (jako liczbę całkowitą) odczyt lub -1 Jeśli osiągnięto koniec strumienia (przepływ kopii pliku).
Pamiętaj, że po tym skutecznym odczytaniu obiekt FileInputStream musi zostać zamknięty, z metodą zamknięcia.
Aby oszacować liczbę pozostałych bajtów do odczytania, zastosuj składnię metody:
public int dostępny () rzuca ioExceptionPonieważ ta metoda zwraca oszacowanie, gdy jest używana w połączeniu z Read (), nie można mieć pewności, że wszystkie bajty pliku zostały odczytane. I należy preferować następującą metodę odczytu wszystkich bajtów:
Public Bajte [] ReadallBytes () rzuca IoExceptionTa metoda zwraca wszystkie pozostałe bajty, ale nadal czytałaby cały plik.
Czytanie w arraylist
ArrayList musi być importowany z Java.Util.* pakiet. Poniższy kod odczytuje oszacowanie wszystkich bajtów w obiekcie ArrayList:
ArrayList al = new ArrayList ();Kod zaczyna się od instancji obiektu ArrayList, Al. Następnie jest konstrukt próba. Block trybu zaczyna się od instancji plikuInputStream, FIR. I jest pętla pobytu, która iteruje do momentu dostępnego () i sugeruje, że nie ma się odczytać żadnego bajtu. Pierwsze stwierdzenie w pętli podczas pobytu brzmi i zwraca następny bajt jako liczbę całkowitą. Musi zostać rzucony na bajt. Następna instrukcja w pobycie dołącza (dodaje) następny znak do listy, AL. Wyjście to:
[-119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, -7, 0, 0, 0, - 10, 8, 6, 0, 0, 0, 20, 25, 33, 69, 0, 0, 0, 6, 98, 75, 71, 68, 0, -1, 0, -1, 0, -1 , -96, -67, -89, -109, 0, 0, 3, 48, 73, 68, 65, 84, 120, -100, -19, -42, 49, 74, 67, 81, 0, 68, -47, -81, -68, 52, 105, 83, -120, 85, 42, 65, -112, -12, 41, 44, 92, 64, -74, -26, 34, 92, -110, -115, -107, 32, -23, -19, 44, 4, 9, -60, 85, 60, 62, 92, -50, 89, -63, 52, 23, -26, - - - 26, -70, 44, -41, 5, 104, 58, -99 - - i kontynuuje - - -]Bajty to liczby całkowite. Mamy nadzieję, że obraz poprzednich trzech barów składa się z tych wszystkich bajtów. Pomysł polega na zmianie niektórych bajtów, zmodyfikowania obrazu, a następnie zapisania wyniku; Następnie ponownie przełącz go za pomocą obrazu obrazu podczas prezentacji zmodyfikowanego obrazu. Jednak ten dodatkowy harmonogram nie jest adresowany w tym artykule.
Czytanie w tablicy
Metoda ReadallBytes () zwraca szereg bajtów. Tak więc, po prostu odbieraj wartości zwrotne z tablicą bajtów, jak pokazuje następujący kod:
bajt [] arr = nowy bajt [1000];Kod zaczyna się od deklaracji tablicy, która odbędzie bajty. Rozmiar (długość) tutaj powinien być powyżej szacowanego rozmiaru. Szacowany rozmiar można uzyskać za pomocą metody dostępnej (). Główny kod jest w bloku trybu. Wyjście to:
-119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, -7, 0, 0, 0, -10, 8, 6, 0, 0, 0, 20, 25, 33, 69, 0, 0, 0, 6, 98, 75, 71, 68, 0, -1, 0, -1, 0, -1, - 96, -67, -89, -109, 0, 0, 3, 48, 73, 68, 65, 84, 120, -100, -19, -42, 49, 74, 67, 81, 0, 68, -47, -81, -68, 52, 105, 83, -120, 85, 42, 65, -112, -12, 41, 44, 92, 64, -74, -26, 34, 92, -110 , -115, -107, 32, -23, -19, 44, 4, 9, -60, 85, 60, 62, 92, -50, 89, -63, 52, 23, -26, -26, -70, 44, -41, 5, 104, 58, -99, - - i kontynuuje - - -To wyjście i poprzednie są takie same na komputerze autora.
Wniosek
Lokalne pliki tekstowe i bajtów można odczytać. Aby odczytać plik tekstowy, użyj klasy strumieniowej, FileReader. Aby odczytać plik bajtów, użyj klasy strumieniowej, FileInputStream. Obie klasy są w Javie.io.* Pakiet, który należy zaimportować. Te dwie klasy mają konstruktory i metody, które umożliwiają odczyt. Mamy nadzieję, że thid artykuł jest pomocny. Sprawdź inne artykuły w Linux, aby uzyskać więcej wskazówek i samouczków.