„Cześć, Amigo, jeszcze raz”.
„Cześć, Rishi. O czym będzie dzisiejsza lekcja?”
„Dzisiaj opowiem ci o Readerze i Writerze”.
„Ale, Rishi, wiem już o nich prawie wszystko!”
„Powtarzanie jest matką nauki”.
— Hmm. Cóż, dobrze.
„ Czytnik i program piszący są odpowiednikami InputStream i OutputStream , ale działają ze znakami, a nie bajtami. Czasami nazywane są również strumieniami znaków, w przeciwieństwie do InputStream i OutputStream , które są nazywane strumieniami bajtów”.
„Jeden dla znaków, drugi dla bajtów. Pamiętam”.
„To nie wszystko. Te klasy są specjalnie zaprojektowane do pracy z tekstem i ciągami znaków. Dzisiaj przyjrzymy się dwóm klasycznym implementacjom tych abstrakcyjnych klas: FileReader i FileWriter ”.
„Oto metody klasy FileReader :”
metoda | Opis |
---|---|
int read() |
Odczytuje jeden znak ze strumienia i zwraca go. |
int read(char cbuf[], int offset, int length) |
Odczytuje tablicę znaków, zwraca liczbę odczytanych znaków. |
boolean ready() |
Zwraca wartość true, jeśli można odczytać ze strumienia. |
void close() |
Zamyka strumień wejściowy. |
int read(java.nio.CharBuffer target) |
Wczytaj zestaw znaków do bufora. |
int read(char cbuf[]) |
Odczytuje tablicę znaków. |
long skip(long n) |
Pomija n znaków w strumieniu. |
String getEncoding() |
Zwraca bieżące kodowanie strumienia. |
„Cóż, wiem prawie wszystko. Ale co z FileWriter?”
metoda | Opis |
---|---|
void write(int c) |
Zapisuje jeden znak do strumienia. |
void write(char cbuf[], int off, int len) |
Zapisuje tablicę znaków w strumieniu. |
void write(char cbuf[]) |
Zapisuje tablicę znaków w strumieniu. |
void write(String str, int off, int len) |
Zapisuje część ciągu do strumienia. |
void write(String str) |
Zapisuje ciąg znaków w strumieniu. |
void flush() |
Zapisuje wszystko, co znajduje się w pamięci podręcznej na dysku. |
void close() |
Zamyka strumień. |
String getEncoding() |
Zwraca bieżące kodowanie strumienia. |
"Wiem to!"
- To wspaniale. W takim razie spójrzmy na jeden interesujący przykład, a później Diego da ci więcej zadań.
„Jak czytać plik wiersz po wierszu? Czy potrafisz napisać kod?”
„Spokojnie, spójrz:”
// Create a list for storing the lines
List<String> list = new ArrayList<String>();
// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
// As long as the file isn't empty, read from it
while (reader.ready())
{
list.add(reader.readLine());
}
// Close the file
reader.close();
„Hm. Nieźle”.
„Nieźle? To wszystko jest proste i piękne. Przyznaj, Rishi – mam już doskonałe opanowanie wątków we/wy. Co więc można tu ulepszyć?”
„Cóż, możesz na przykład zrobić to:”
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Hmm. To jest krótsze. A właśnie dzisiaj opowiedziałeś mi o tych wszystkich metodach. Przerobię to. Dziękuję za lekcję, Rishi."
– Powodzenia, Amigo.
GO TO FULL VERSION