NIVELL 4 · Sessió 4 · Bytes, caràcters i try-with-resources
Els fluxos
- Missatge
- Manual
- Reptes
- Cartutx
Aquest nivell ja està superat. Pots tornar-lo a jugar, però la puntuació desada no canviarà.
Manual del nivell
Desbloqueja les 3 pàgines del manual per poder jugar. Llegeix-les bé: els reptes en faran preguntes.
Bytes o caràcters?
- Fluxos de bytes (
InputStream,OutputStreami derivats): serveixen per a qualsevol fitxer (imatges, zips, binaris).DataOutputStreamiDataInputStreamguarden tipus primitius (writeInt,writeDouble,writeUTF). - Fluxos de caràcters (
Reader,Writeri derivats): per a text, amb una codificació (UTF-8). - Els
Buffered…afegeixen una memòria intermèdia: llegeixen i escriuen a blocs, molt més ràpid.
Llegir text línia a línia
readLine() retorna null quan arriba al final del fitxer. La primera línia del catàleg és la capçalera.
try (BufferedReader lector = Files.newBufferedReader(cataleg, StandardCharsets.UTF_8)) {
String linia;
while ((linia = lector.readLine()) != null) {
String[] camps = linia.split(";");
System.out.println(camps[1]);
}
}| Fragment | Què fa |
|---|---|
Files.newBufferedReader(..., UTF_8) | Obre el fitxer per llegir text amb la codificació explícita. |
(linia = lector.readLine()) != null | Llegeix una línia i comprova que no s'ha arribat al final. |
linia.split(";") | Separa els camps pel punt i coma del catàleg. |
try-with-resources, APPEND i bytes
Tot el que es declara al parèntesi del try es tanca sol, també si hi ha una excepció. Sense tancar, les dades poden quedar a mig escriure.
Per afegir al final d'un fitxer: StandardOpenOption.CREATE, StandardOpenOption.APPEND. Per copiar bytes, read(buffer) retorna quants bytes ha llegit, i -1 al final.
while ((llegits = in.read(buffer)) != -1) {
out.write(buffer, 0, llegits);
}Nivell superat
Fluxos nets: el BUG·0x00 ja no pot colar-se a les lectures. Quart cartutx recuperat.
- XP guanyats
- 0
- Errors
- 0
- Pistes
- 0
Anota bé la lletra i la seva posició: abans del boss hauràs de reconstruir la contrasenya.