"Hej, Amigo, endnu en gang."

"Hej til dig, Rishi. Hvad vil dagens lektion handle om?"

"I dag skal jeg fortælle dig om læser og forfatter."

"Men Rishi, jeg ved allerede næsten alt om dem!"

"Gentagelse er læringens moder."

"Hmm. Nå, okay."

" Reader og Writer er analoger til InputStream og OutputStream , men de arbejder med tegn, ikke bytes. Nogle gange kaldes de også for tegnstrømme, i modsætning til  InputStream  og  OutputStream , som kaldes bytestrømme."

"Den ene er til tegn, den anden er til bytes. Jeg kan huske."

"Det er ikke kun det. Disse klasser er specielt designet til at arbejde med tekst og strenge. I dag vil vi se på to klassiske implementeringer af disse abstrakte klasser: FileReader og FileWriter ."

"Her er metoderne til FileReader- klassen:"

Metode Beskrivelse
int read() Læser et tegn fra strømmen og returnerer det.
int read(char cbuf[], int offset, int length) Læser en række tegn, returnerer antallet af læste tegn.
boolean ready() Returnerer sand, hvis det er muligt at læse fra streamen.
void close() Lukker inputstrømmen.
int read(java.nio.CharBuffer target) Læs et sæt tegn ind i en buffer.
int read(char cbuf[]) Læser en række karakterer.
long skip(long n) Springer n tegn over i strømmen.
String getEncoding() Returnerer den aktuelle kodning af strømmen.

"Nå, jeg ved næsten alt dette. Men hvad med FileWriter?"

Metode Beskrivelse
void write(int c) Skriver et tegn til strømmen.
void write(char cbuf[], int off, int len) Skriver en række tegn til strømmen.
void write(char cbuf[]) Skriver en række tegn til strømmen.
void write(String str, int off, int len) Skriver en del af en streng til strømmen.
void write(String str) Skriver en streng til strømmen.
void flush() Skriver alt cachelagret i hukommelsen til disk.
void close() Lukker strømmen.
String getEncoding() Returnerer den aktuelle kodning af strømmen.

"Jeg ved det!"

"Det er vidunderligt. Så lad os se på et interessant eksempel, og senere vil Diego give dig flere opgaver."

"Hvordan læser du en fil linje for linje? Kan du skrive koden?"

"Nemt, se:"

Kode
// 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. Ikke dårligt."

"Ikke dårligt? Det hele er enkelt og smukt. Indrøm det, Rishi - jeg har allerede en fremragende beherskelse af I/O-tråde. Så hvad kan forbedres her?"

"Nå, for eksempel, du kunne gøre dette:"

Rishis kode
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

"Hmm. Det er kortere. Og lige i dag fortalte du mig om alle disse metoder. Jeg vil omarbejde det. Tak for lektionen, Rishi."

"Held og lykke, Amigo."