Alternativa con BufferedReader
Lettura più rapida dalla console
Alternativa con BufferedReader è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Un lettore più veloce
Scanner è pratico, ma relativamente lento per input di grandi dimensioni. Per leggere grandi quantità di dati, BufferedReader di java.io è molto più veloce, perché legge grandi blocchi alla volta.
Creare un BufferedReader
Inserisca un InputStreamReader che avvolge System.in all'interno di un BufferedReader. Qui utilizziamo un StringReader per consentire l'esecuzione degli esempi senza input digitato.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("Hello"));
System.out.println(reader.readLine());
reader.close();
}
}readLine restituisce una String
readLine() legge un'intera riga come String, senza il terminatore di riga. A differenza di Scanner, restituisce sempre testo, quindi deve analizzare personalmente i numeri.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("first\nsecond"));
System.out.println(reader.readLine());
System.out.println(reader.readLine());
reader.close();
}
}La fine dell'input è null
Quando non è presente altro input, readLine() restituisce null. Questo indica che è il momento di terminare la lettura.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("one line"));
System.out.println(reader.readLine());
System.out.println(reader.readLine());
reader.close();
}
}Leggere tutte le righe
Ripeta l'operazione mentre readLine() non è null, per elaborare ogni riga dell'input.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("a\nb\nc"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println("> " + line);
}
reader.close();
}
}Analizzare personalmente i numeri
Poiché readLine restituisce testo, lo converta con Integer.parseInt quando ha bisogno di un numero.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("42"));
int n = Integer.parseInt(reader.readLine().trim());
System.out.println(n * 2);
reader.close();
}
}Dividere una riga in token
Per leggere più numeri da una sola riga, divida la riga con split e analizzi ogni parte.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("10 20 30"));
String[] parts = reader.readLine().split(" ");
int sum = 0;
for (String p : parts) {
sum += Integer.parseInt(p);
}
System.out.println(sum);
reader.close();
}
}Eccezioni controllate
readLine dichiara una IOException controllata, quindi deve dichiarare throws IOException oppure racchiudere la chiamata in un try-catch. Scanner non richiede questo passaggio.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new StringReader("data"));
System.out.println(reader.readLine());
reader.close();
} catch (IOException e) {
System.out.println("Read error");
}
}
}Try-with-resources
Utilizzi try-with-resources, in modo che il lettore venga chiuso automaticamente anche se si verifica un'eccezione.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(new StringReader("auto-closed"))) {
System.out.println(reader.readLine());
}
}
}Un esempio reale con System.in
Per l'input reale dalla tastiera, avvolga System.in. Esegua questo codice localmente, digiti una riga e prema Invio.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter text: ");
String input = reader.readLine();
System.out.println("You typed: " + input);
}
}Scanner e BufferedReader a confronto
Scelga Scanner per la praticità e la semplice analisi dei numeri. Scelga BufferedReader per la velocità con input di grandi dimensioni, tenendo presente che dovrà analizzare i dati e gestire personalmente IOException.
Verifica rapida
Verifichi le Sue conoscenze su BufferedReader.
Riepilogo
Ha imparato a usare l'alternativa BufferedReader:
- Avvolga
System.ininInputStreamReadere poi inBufferedReader readLine()restituisce un'intera riga oppurenullalla fine dell'input- Analizzi personalmente i numeri con
Integer.parseIntesplit - Genera una
IOExceptioncontrollata, quindi deve gestirla o dichiararla - Lo preferisca a Scanner per input di grandi dimensioni e ad alta intensità di elaborazione
Domande Frequenti
La lezione «Alternativa con BufferedReader» è gratuita?
Sì — il testo completo di «Alternativa con BufferedReader» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Alternativa con BufferedReader»?
Lettura più rapida dalla console Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Alternativa con BufferedReader»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Lettura dell'input con Scanner
- Lettura di numeri e righe
- Convalida dell'input dell'utente
- Alternativa con BufferedReader