"Hei, Amigo, nok en gang."

"Hei til deg, Rishi. Hva skal dagens leksjon handle om?"

"I dag skal jeg fortelle deg om Leser og forfatter."

"Men Rishi, jeg vet nesten alt om dem allerede!"

"Repetisjon er læringens mor."

"Hmm. Vel, greit."

" Reader og Writer er analoger til InputStream og OutputStream , men de fungerer med tegn, ikke byte. Noen ganger kalles de også for tegnstrømmer, i motsetning til  InputStream  og  OutputStream , som kalles bytestrømmer."

"Den ene er for tegn, den andre er for bytes. Jeg husker."

"Det er ikke bare det. Disse klassene er spesielt designet for å fungere med tekst og strenger. I dag skal vi se på to klassiske implementeringer av disse abstrakte klassene: FileReader og FileWriter ."

"Her er metodene for FileReader- klassen:"

Metode Beskrivelse
int read() Leser ett tegn fra strømmen og returnerer det.
int read(char cbuf[], int offset, int length) Leser en rekke tegn, returnerer antall leste tegn.
boolean ready() Returnerer sann hvis det er mulig å lese fra strømmen.
void close() Lukker inndatastrømmen.
int read(java.nio.CharBuffer target) Les et sett med tegn inn i en buffer.
int read(char cbuf[]) Leser en rekke karakterer.
long skip(long n) Hopper over n tegn i strømmen.
String getEncoding() Returnerer gjeldende koding av strømmen.

"Vel, jeg vet nesten alt dette. Men hva med FileWriter?"

Metode Beskrivelse
void write(int c) Skriver ett tegn til strømmen.
void write(char cbuf[], int off, int len) Skriver en rekke tegn til strømmen.
void write(char cbuf[]) Skriver en rekke tegn til strømmen.
void write(String str, int off, int len) Skriver en del av en streng til strømmen.
void write(String str) Skriver en streng til strømmen.
void flush() Skriver alt som er bufret i minnet til disk.
void close() Lukker strømmen.
String getEncoding() Returnerer gjeldende koding av strømmen.

"Jeg vet det!"

"Det er fantastisk. Så la oss se på ett interessant eksempel, og senere vil Diego gi deg flere oppgaver."

"Hvordan leser du en fil linje for linje? Kan du skrive koden?"

"Lett, 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 verst."

"Ikke verst? Det hele er enkelt og vakkert. Innrøm det, Rishi - jeg har allerede en utmerket mestring av I/O-tråder. Så hva kan forbedres her?"

"Vel, for eksempel, du kan gjøre dette:"

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

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

"Hmm. Det er kortere. Og akkurat i dag fortalte du meg om alle disse metodene. Jeg skal omarbeide det. Takk for leksjonen, Rishi."

"Lykke til, Amigo."