Grundlegende Konzepte von IO -Streams
IO -Streams werden verwendet, um die Datenübertragung zwischen Geräten zu verarbeiten
Java betreibt Daten über Streams
Die von Java verwendeten Objekte zum Betrieb von Streams sind in zwei Arten von Streams auf IO -Paketen unterteilt: Byte -Streams und Zeichenströme: Eingabestreams und Ausgabeströme.
Abstrakte Basisklasse für Byte -Streams: InputStream, OutputStream
Abstrakte Basisklasse für Charakterströme: Leser, Schriftsteller
Hinweis: Die von diesen 4 Klassen abgeleiteten Unterklassennamen sind alle Suffixe der Unterklassennamen mit ihren übergeordneten Klassennamen.
Zum Beispiel: Unterklasse von InputStream: FileInputStream
Zum Beispiel: die Unterklasse des Leser -Filereaders
Wenn Sie ein Filewriter -Objekt erstellen, muss nach der Initialisierung des Objekts die zu bedienende Datei klar definiert sein und die Datei in das angegebene Verzeichnis erstellt wird. Wenn es im Verzeichnis eine Datei mit demselben Namen gibt, wird sie überschrieben.
Demo:
Paket javase.day18; Import Java.io.FileWriter; importieren java.io.ioException; öffentliche Klasse FileWriterDemo {public static void main (String [] args) {Filewriter fw = null; try {fw = new FileWriter ("c: //java_test//filewritertest.txt"); // Rufen Sie die Schreibmethode an, um die Zeichenfolge in den Stream fw.write zu schreiben ("Alex Test23"); // die Daten im Puffer im Stream -Objekt fw.flush () frisch; } catch (ioException e) {e.printstacktrace (); } endlich {try {if (fw! = null) {// Die Stream -Ressource schließen, aber der interne Puffer wird einmal aktualisiert, bevor er fw.close () schließt; }}} catch (ioException e) {e.printstacktrace (); }}}} Paket javase.day18; Import Java.io.FileWriter; importieren java.io.ioException; öffentliche Klasse FileWriterDemo {public static void main (String [] args) {Filewriter fw = null; try {fw = new FileWriter ("c: //java_test//filewritertest.txt"); // Rufen Sie die Schreibmethode an, um die Zeichenfolge in den Stream fw.write zu schreiben ("Alex Test23"); // die Daten im Puffer im Stream -Objekt fw.flush () frisch; } catch (ioException e) {e.printstacktrace (); } endlich {try {if (fw! }}} catch (ioException e) {e.printstacktrace (); }}}}Drucken Sie den Quellcode des Java -Datei -Demo -Codes:
Paket javase.day18; Import Java.io.Filereader; importieren java.io.ioException; public class fileReentest {public static void main (String [] args) {try {fileReader fr = new FileReader ("c: //java_test//systemdemo.java"); char [] buf = new char [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {System.out.println (neue String (buf, 0, num)); }} catch (ioException e) {e.printstacktrace (); }}} Paket javase.day18; Import Java.io.Filereader; importieren java.io.ioException; public class fileReentest {public static void main (String [] args) {try {fileReader fr = new FileReader ("c: //java_test//systemdemo.java"); char [] buf = new char [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {System.out.println (neue String (buf, 0, num)); }} catch (ioException e) {e.printstacktrace (); }}} Kopieren Sie den Datei -Demo -Code:
Die Methode für Copy_1 () besteht darin, ein Zeichen zu lesen und ein Zeichen zu schreiben.
Die von Copy_2 () verwendete Methode besteht darin, die Zeichen gleichzeitig in ein Zeichenarray zu lesen und sie schließlich erneut in die Zieldatei zu schreiben.
Paket javase.day18; Import Java.io.Filereader; Import Java.io.FileWriter; importieren java.io.ioException; public class CopyText {public static void main (String [] args) {try {copy_1 (); } catch (ioException e) {e.printstacktrace (); }} public static void copy_1 () löst IOException aus {FileWriter fw = neuer FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 () löst IOException aus {FileWriter fw = neuer FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = new char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} Paket javase.day18; Import Java.io.Filereader; Import Java.io.FileWriter; importieren java.io.ioException; public class CopyText {public static void main (String [] args) {try {copy_1 (); } catch (ioException e) {e.printstacktrace (); }} public static void copy_1 () löst IOException aus {FileWriter fw = neuer FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! =-1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 () löst IOException aus {FileWriter fw = neuer FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = new char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} Puffer für Zeichenströme:
Die Entstehung von Puffern verbessert die Lese- und Schreibeffizienz von Daten.
Entsprechende Klassen: BufferedWriter, BufferedReader.
Der Puffer muss mit dem Stream kombiniert werden, bevor er verwendet werden kann.
Die Funktion des Flusses wird basierend auf dem Fluss verbessert.
Grundregeln des IO -Stream -Betriebs:
1. Löschen Sie die Quelle und den Zweck:
Quelle: Eingabestream, Leser
Zweck: OutputStream, Schriftsteller
2. Ob die Daten des Vorgangs einfacher Text sind:
Ja: Zeichenstrom Nr.: Byte Stream ist: (1) Wenn der Leser für Eingabezeichenstream verwendet wird
(2) verwenden InputStream für Eingabe -Byte -Stream
(3) Verwenden Sie den Autor für den Ausgangszeichenstream
(4) Bei Verwendung von OutputStream für den Ausgangsbyte -Stream
3. Wenn das System klar ist, klären Sie dann, welches bestimmte Objekt verwendet werden soll:
Quellgerät: Speicher, Festplatte, Tastaturzielgerät: Speicher, Festplatte, Konsole
IO -Betriebs -Toolklasse
[1] String fileReaderStringHandle (String -Dateiname)
Lesen Sie die Datei (angegeben von Dateiname) in eine Zeichenfolge.
[2] byte [] fileReaderByTehandle (String -Dateiname)
Lesen Sie die Datei (angegeben von Dateiname) in ein Byte -Array;
[3] void FileWriterHandle (String -Dateiname, String -Text)
Schreibt eine Zeichenfolge (nach Text angegeben) in eine Datei (angegeben durch Dateiname).
Ioutil.java
Importieren Sie Java.io.BufferedInputStream; Import Java.io.bufufferedReader; Import Java.io.file; Import Java.io.fileInputStream; Import Java.io.io.fileader; (Bereitstellung von Readline -Methode) * * @param Dateiname * @return String */ public static String fileReAnStringHandle (String -Dateiname) {StringBuilder sb = new StringBuilder (); try {bufferedReader in = new bufferedReader (neuer fileReader (neuer Datei (Dateiname) .getabsoluteFile ())); Versuchen Sie {String S; while ((s = in.readline ())! = null) {sb.Append (s); sb.Append ("/n"); }} endlich {in.close (); }} catch (ioException e) {neue RunTimeException (e) werfen; } return sb.toString (); } / ** * Verwenden Sie FileInputStream+BufferedInputStream, um Dateien auf eine Byte -Weise zu verarbeiten try {bufferedInputStream bf = new buferedInputStream (neuer FileInputStream (Dateiname)); try {data = new byte [bf.available ()]; bf.read (Daten); } endlich {bf.close (); }} catch (ioException e) {neue RunTimeException (e) werfen; } returndaten == null? New Byte [] {}: Daten; } / ** * Schreiben Sie den angegebenen Text in eine Datei namens Dateiname * * @param Dateiname * @param text * / public static void FileWriterHandle (String -Dateiname, String -Text) {try {printwriter out = new printwriter (new File (Dateiname) .getabsoluteFile ()); versuche {out.print (Text); } endlich {out.close (); }} catch (ioException e) {neue RunTimeException (e) werfen; }} public static void main (String [] args) löst ioException {System.out.print (fileReaderStringHandle ("src/ioutil.java") aus; für (byte b: fileReaderByTehandle ("src/ioutil.java")) system.out.print (b); FileWriterHandle ("zj.txt", fileReaderStringHandle ("src/ioutil.java")); }}