Vor kurzem habe ich angefangen, Java im Unterricht zu schreiben. Ich habe die Beziehung zwischen Datei, InputStream, FileReader und Scanner nicht verstanden, daher werde ich sie zusammenfassen.
Dieser Artikel setzt Java SE 1.8 voraus. Dieser Artikel ist jedoch eine Zusammenfassung älterer java.io, nicht java.nio.
Es gibt keine Ausnahmebehandlung im Code, aber Sie müssen in der Lage sein, beim Öffnen einer Datei eine FileNotFoundException und beim Lesen oder Schreiben einer Datei eine IOException zu erhalten (oder sie in eine der oben genannten Methoden zu werfen).
Am Ende der Seite befindet sich ein zusammenfassendes Diagramm.
https://docs.oracle.com/javase/jp/8/docs/api/java/io/package-summary.html
File, FileDescriptor
File file = new File("file.txt"); //Kann aus dem Dateinamen erstellt werden
InputStream Klasse zum Lesen von Bytes
--java.io.InputStream abstrakte Klasse --java.io.FileInputStream: Klasse zum Erstellen von InputStream aus Dateien --java.io.FilterInputStream: Klasse zum Halten von InputStream --java.io.BufferedInputStream: Puffert InputStream und lässt es als InputStream erscheinen.
// System.in ist eine Instanz von InputStream
InputStream sytemin = System.in;
//Erstellen Sie einen Stream aus einer Datei
InputStream fileStream = new FileInputStream("file.txt");
//Puffer den Stream
InputStream bufferedStream = new BufferedInputStream(fileStream);
bufferedStream.close();
Reader Klassen mit 'Reader' am Ende ihres Namens, wie z. B. InputStream 'Reader', sind Klassen zum Lesen von String-Streams.
--java.io.Reader Abstrakte Klasse --java.io.InputStreamReader: InputStream => Bridging zum Reader. Sie können den Zeichensatz angeben --java.io.FileReader: Einfache Klasse (Reader besteht aus File, FileDescriptor, fileName. Die Zeichenkodierung kann nicht angegeben werden.) --java.io.BufferedReader: Puffer der Reader-Klasse
//Erstellen Sie einen Bytestream aus einer Datei
InputStream fileStream1 = new FileInputStream("file1.txt");
//Erstellen Sie einen String-Stream aus einem Byte-Stream
Reader reader1 = new InputStreamReader(fileStream1);
//Erstellen Sie einen Bytestream aus einer Datei
InputStream fileStream2 = new FileInputStream("file2.txt");
//Erstellen Sie einen String-Stream. Geben Sie die Zeichenfolgencodierung an
Reader reader2 = new InputStreamReader(fileStream2, "utf-8");
//Erstellen Sie mit einer einfachen Klasse einen Reader direkt aus einer Datei
Reader reader3 = new FileReader("file3.txt");
//Puffer den Leser
BufferedReader bufferedReader3 = new BufferedReader(reader3);
//BufferedReader liest eine Textzeile readLine()Es gibt
String line = bufferedReader3.readLine();
reader1.close();
reader2.close();
bufferedReader3.close();
java.util.Scanner Ein Scanner, der primitive Typen wie int, long und boolean sowie Zeichenfolgen aus Text abruft. Es kann aus der File-Klasse und der InputStream-Klasse erstellt werden. Sie können auch die Zeichenfolgencodierung angeben. Sie können die Übereinstimmung von Trennzeichen mit einem regulären Ausdruck angeben. Weitere Informationen finden Sie unter https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html
// System.Lesen Sie eine Nummer von in
Scanner sc1 = new Scanner(System.in);
int i = sc1.nextInt();
//Aus Datei erstellen
Scanner sc2 = new Scanner(new File("file.txt"));
// Scanner sc2 = new Scanner("file.txt"));Ich kann so etwas nicht machen.
//Wenn du das tust"file.txt"Ich versuche die Zeichenkette zu lesen.
//Ändern Sie das Trennzeichen in Komma
sc2.useDelimiter(",");
//Zeigen Sie eine Zeile für jedes Trennzeichen an
while (sc2.hasNext())
{
String str = sc2.next();
System.out.println(str);
}
// sc1.close();
sc2.close();
Name der Klasse | Demontage | Bedeutung |
---|---|---|
FileInputStream | File-InputStream | Datei in InputStream konvertieren. |
InputStreamReader | InputStream-Reader | Konvertieren Sie InputStream in Reader. |
FileReader | File-Reader | Datei in Reader konvertieren. |
Recommended Posts