Domanda

Se ho la seguente file esempio in cui ogni numero è rappresenta un byte (123 byte ha 1, 2, e 3):

123456789

Diciamo che creo un FileInputStream. Questo si legge nel byte per byte binario. Così .read () restituisce 1, poi 2, ecc Ora diciamo che creo un buffer. Il pezzo iniziale, si legge in (se ho capito bene i buffer) è 1-5. Questo gli permette di leggere non solo in byte per byte, ma nel caso di personaggi linee intere, ecc Ma se mi ha colpito .read () ancora una volta, mi metto a 6, e non dove il BufferedReader interrotta (quindi se 3 è un interruzione di linea, e ho detto il BufferedReader per stampare la prima linea, stampa 1-2, e quindi utilizzando .read () dal FileInputStream mi dà 6, e non 3).

Al fine di essere in grado di analizzare i dati dal delimitatore, non uno scanner crea implicitamente un buffer come come un BufferedReader crea un buffer in modo che possa trovare interruzioni di linea, ecc? E se mi passa un FileInputStream separata nello scanner, utilizzando .read () non stampa il primo byte che segue il primo delimitatore lo scanner ha trovato, ma alla fine della "chunk" lo scanner ha preso?

È stato utile?

Soluzione

.

Dal codice java.util.Scanner:

// Internal buffer used to hold input
private CharBuffer buf;

// Size of internal character buffer
private static final int BUFFER_SIZE = 1024; // change to 1024;

Altri suggerimenti

Non è ovvio, ma se si guarda la documentazione delle API di scanner con attenzione, si vede che si basa sulla interfaccia nofollow noreferrer Readable - e l'unico metodo in tale interfaccia si basa su un buffer. Quindi sì, Scanner crea implicitamente un buffer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top