IO Stream
In Java sind IO -Streams in zwei Typen unterteilt: Byte -Streams und Zeichenströme. Wie der Name schon sagt, werden Byte -Streams gemäß Bytes gelesen und geschrieben, und auf Zeichen werden nach Zeichen zugegriffen. Das häufig verwendete Datei -Lesen ist Zeichenstrom, und Byte -Streams werden in der Netzwerkkommunikation verwendet.
Die folgende Abbildung ist der Gesamtrahmen von IO -Streams in Java:
Byte -Stream
In Java enden Byte -Streams im Allgemeinen mit Streams. Der Eingangs -Byte -Stream wird als InputStream bezeichnet und der Ausgangs -Byte -Stream wird als OutputStream bezeichnet. InputStream und OutputStream sind Superklassen, die alle Klassen ihrer Eingabe/Ausgabe darstellen, und abstrakte Klassen (Abstract)
Häufig verwendete Byteströme sind:
1.FileInputStream/FileOutputStream2.BuffenedInputStream/BufferedOutputStream3.SequenceInputStream (Sequenzstrom) 4.ObjectInputStream/ObjectOutputStream (Objekteingabe- und Ausgangsstrom) 5.printstream (Druckstream)
Charakterstrom
In Java endet der Eingangscharakterstrom mit dem Leser, und der Ausgangszeichenstream endet mit dem Schriftsteller. Zum Beispiel sind unsere gemeinsamen Filereader und Filewriter Charakterströme, und Leser und Witer sind Superklassen von Eingangs-/Ausgangszeichen -Streams und auch abstrakte Klassen.
Häufig verwendete Zeichenströme sind:
1.FileReader/FileWriter2.BufferedReader/BufferedWriter3.InputStremReader/OutputStreamWriter (Convert Stream)
Fluss konvertieren
Ein Konvertierungsstrom ist eine Klasse, die einen Byte -Stream in einen Zeichenstrom umwandelt, und es gibt zwei Typen:
・ InputStreamReader ・ OutputStreamWriter
InputStreamReader ist ein Zeichenstrom (Leser), für den ein Byte -Stream (InputStream) eingewickelt werden muss.
OutputStreamWriter ist ein Zeichenstrom (Schriftsteller) und muss einen Byte -Stream (OutputStream) einwickeln
Schmücken
Der Zweck der Verpackung ist es, auf der Grundlage des ursprünglichen Objekts neue Funktionen hinzuzufügen. Zum Beispiel wickelt der BufferedReader einen Leser, was tatsächlich eine Verbesserung der Leserfunktion ist. Der ursprüngliche Leser kann nur von einem Zeichen und einem Zeichen gelesen werden, und der nach der Verpackung gebildete BufferedReader hat eine neue Funktion: die Funktion des direkten Lesens einer Zeile (Readline). Intuitiv gesehen ist dies das sogenannte Dekorieren.
In Bezug auf den Designmodus ist dies ein typischer dekorativer Modus, und seine Eigenschaften sind:
1. Dekorative Objekte und reale Objekte haben die gleiche Schnittstelle. Auf diese Weise kann das Client -Objekt mit dem dekorativen Objekt auf die gleiche Weise wie das reale Objekt interagieren. 2. Das dekorative Objekt kann einige zusätzliche Funktionen vor oder nach dem Weiterleiten dieser Anforderungen hinzufügen. Dies stellt sicher, dass während der Laufzeit zusätzliche Funktionen extern hinzugefügt werden können, ohne die Struktur des angegebenen Objekts zu ändern.
Entspricht uns, dass BufferedReader und Leser beide Leser sind. Nach der Verpackung wird die BufferedReader -Funktion verbessert, kann jedoch weiterhin als Leser verwendet werden (OOs übergeordnete Klassenreferenz kann auf Unterklassen verweisen)
Beispiel
Beispiel des Byte -Streams
Schneiden Sie die MP3 -Datei in mehrere Kopien und rekombinieren Sie sie neu
Paket cn.xdian.test; import java.io.file; import Java.io.fileinputStream; Import Java.io.fileOutputStream; Import Java.io.ioxception; Import Java.io.SequenceInputStream; Import Java.util.enum. löscht ioException {cutFile (); // mp3 -Datei mergeflile (); // MP3 -Dateien medaillieren} // MP3Public static void mergeflile () löscht ioException {Datei Dire = new File ("/home/gavinzhou/music_test"); // Finden Sie alle MP3 -Dateien in den Ordner -Vektor <dateis. Vector <DateinputStream> (); Datei [] file = dirl.Listfiles (); Für (Dateidatei: Dateien) {if (Datei.getName (). EndsWith (". Mp3") {vector.add (neuer FileInputStream (Datei));}} // den Iterator durch Vektor Enumeration <DateinputStream> e = vector.Elements (); // Erstellen eines Sequenz -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams -Streams () // FileOutputStream FileOutputStream = new FileOutputStream ("/home/gavinzhou/conbine.mp3"); // Lesen Sie die geteilte MP3-Datei-Byte [] buf = new Byte [1024]; int länge = 0; while (length = inputStream.read (BUF)! FileOutputStream.CLOSE (); inputStream.close ();} // MP3Public static void cutfile () löscht ioException {Datei = neue Datei ("/home/gavinzhou/test.mp3"); Datei Dir = New File ("/home/home/gavinzhou/music_tens"); // Input -Byte -Stream -Datei/music_ten "); // Input -Byte -Stream -Datei/music_ten"); // Input -Byte -Stream -Stream -Stream -Datei "). FileInputStream (Datei); // Lesen Sie das Datei-Byte [] buf = new Byte [1024*1024]; int länge = 0; für (int i = 0; (Länge = FileInputStream.read (BUF)! Datei (DIR, "Teil"+i+". Mp3")); FileOutputStream.write (BUF, 0, Länge); FileOutputStream.CLOSE ();} // Schließen Sie den Stream -Datei -Putstream.close ();}}Beispiel des Zeichenstroms
Datei A in Datei B kopieren B
Paket cn.xidian.test; import Java.io.bufferedReader; Import Java.io.BufferedWriter; Import Java.io.File; Import Java.io.Filereader; Importieren Sie Java.io.io.file. Datei ("/home/gavinzhou/a.txt"); Datei Desfile = new Datei ("/home/gavinzhou/b.txt"); // Erstellen des Eingabestreams BufferedReader Input = New BufferedReader (New FileReader (Neue Fileeader)). Linie = null; while ((line = input.readline ())!Beispiel des Druckstroms
Paket cn.xidian.test; import java.io.file; import java.io.fileoutputstream; import Java.io.ioxception; import Java.io.printstream;/*Print -Stream kann jede Art von Daten drucken. Vor dem Drucken der Daten werden die Daten in eine Zeichenfolge konvertiert und dann*/Class Animal {String -Name; String Color; public Animal (String -Name, String -Farbe) {this.name = name; this.color = color;}@Override Public String toString () {return "name:"+ this.name+ "color:" this. löscht ioException {/* Datei Datei = neue Datei ("/home/gavinzhou/a.txt"); // Erstellen Sie einen Druckstream PrintStream PrintStream = New PrintStream (Datei); // Informationen in die Datei printstream.println (97) drucken; printStream.println (3.14); printStream.println ('a'); printStream.println (true); Tier A = neues Tier ("Ratte", "schwarz"); printStream.println (a); // Ändern Sie das Standardeingangs- und Ausgangssystem. // Standardausgabe ist für das Screen System.out.println ("Test ...."); */// Sammlung von Ausnahmeprotokollinformationen. Datei logfile = new Datei ("/home/gavinzhou/test.log"); printstream logPrintstream = new printstream (new FileOutputStream (logfile, true); try {int c = 4/0; // ein Ausnahmesystem erstellen e) {e.printstacktrace (logPrintStream); // Ausgabe zur Datei anstelle auf dem Bildschirm}}}}Zusammenfassen
Im obigen dreht sich alles um IO -Stream -Analyse und Codebeispiele in Java. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Java Exploration: verschlüsselte und entschlüsselte Codebeispiele für Thread+IO -Dateien
Java IO Stream -verwandte Wissenscodeanalyse
Detaillierte Interpretation von Java IO Stream
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!