– Szia Amigo, még egyszer.
– Szia, Rishi. Miről fog szólni a mai óra?
– Ma az Olvasóról és az Íróról fogok mesélni.
– De Rishi, én már szinte mindent tudok róluk!
"Az ismétlés a tanulás anyja."
"Hmm. Nos, rendben."
" A Reader és a Writer az InputStream és az OutputStream analógjai , de nem bájtokkal, hanem karakterekkel dolgoznak. Néha karakterfolyamnak is nevezik őket, szemben az InputStream és OutputStream-mel , amelyeket bájtfolyamoknak neveznek."
"Az egyik a karakterek, a másik a bájtok. Emlékszem."
"Nem csak erről van szó. Ezeket az osztályokat kifejezetten arra tervezték, hogy szövegekkel és karakterláncokkal dolgozzanak. Ma ezeknek az absztrakt osztályoknak két klasszikus megvalósítását fogjuk megvizsgálni: a FileReader-t és a FileWriter-t ."
"Íme a FileReader osztály metódusai :"
Módszer | Leírás |
---|---|
int read() |
Beolvas egy karaktert az adatfolyamból, és visszaadja. |
int read(char cbuf[], int offset, int length) |
Beolvassa a karakterek tömbjét, visszaadja az olvasott karakterek számát. |
boolean ready() |
Igaz értéket ad vissza, ha lehet olvasni az adatfolyamból. |
void close() |
Bezárja a bemeneti adatfolyamot. |
int read(java.nio.CharBuffer target) |
Olvasson be egy karakterkészletet egy pufferbe. |
int read(char cbuf[]) |
Beolvassa a karakterek tömbjét. |
long skip(long n) |
n karaktert kihagy az adatfolyamban. |
String getEncoding() |
Az adatfolyam aktuális kódolását adja vissza. |
"Nos, én ezt majdnem mind tudom. De mi van a FileWriterrel?"
Módszer | Leírás |
---|---|
void write(int c) |
Egy karaktert ír az adatfolyamba. |
void write(char cbuf[], int off, int len) |
Karaktertömböt ír az adatfolyamba. |
void write(char cbuf[]) |
Karaktertömböt ír az adatfolyamba. |
void write(String str, int off, int len) |
Egy karakterlánc egy részét írja az adatfolyamba. |
void write(String str) |
Karakterláncot ír az adatfolyamba. |
void flush() |
A memóriában tárolt mindent lemezre ír. |
void close() |
Bezárja a patakot. |
String getEncoding() |
Az adatfolyam aktuális kódolását adja vissza. |
"Tudom!"
"Ez csodálatos. Akkor nézzünk egy érdekes példát, és később Diego további feladatokat fog adni."
"Hogyan olvasol sorról sorra egy fájlt? Meg tudod írni a kódot?"
– Nyugi, nézd:
// 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();
"Hmm. Nem rossz."
"Nem rossz? Mindez egyszerű és gyönyörű. Valld be, Rishi – már most kiválóan mesterkedem az I/O szálakban. Szóval mit lehetne ezen javítani?"
"Nos, például ezt teheted:"
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Hmm. Ez rövidebb. És pont ma meséltél nekem ezekről a módszerekről. Átdolgozom. Köszönöm a leckét, Rishi."
– Sok szerencsét, Amigo.
GO TO FULL VERSION