Concepts de base des flux IO
Les flux IO sont utilisés pour traiter la transmission des données entre les appareils
Java exploite des données via des flux
Les objets utilisés par Java pour utiliser des flux sont divisés en deux types de flux sur les paquets IO: flux d'octets et flux de caractères: flux d'entrée et flux de sortie.
Classe de base abstraite pour les flux d'octets: InputStream, OutputStream
Classe de base abstraite pour les flux de personnages: lecteur, écrivain
Remarque: Les noms de sous-classe dérivés de ces 4 classes sont tous des suffixes des noms de sous-classe avec leurs noms de classe parent.
Par exemple: sous-classe de InputStream: FileInputStream
Par exemple: la sous-classe de Reader Fileader
Si vous créez un objet FileWriter, une fois l'objet initialisé, le fichier à utiliser doit être clairement défini et le fichier sera créé dans le répertoire spécifié. S'il y a un fichier avec le même nom dans le répertoire, il sera écrasé.
Démo:
Package Javase.Day18; import java.io.filewriter; Importer java.io.ioException; classe publique FileWriterDemo {public static void main (String [] args) {filewriter fw = null; essayez {fw = new FileWriter ("c: //java_test//filewriteTest.txt"); // appelle la méthode d'écriture pour écrire la chaîne sur le flux fw.write ("Alex test23"); // Frais les données dans le tampon dans l'objet Stream FW.Flush (); } catch (ioException e) {e.printStackTrace (); } Enfin {try {if (fw! = null) {// Fermez la ressource de flux, mais le tampon interne sera rafraîchi une fois avant de fermer fw.close (); }}} catch (ioException e) {e.printStackTrace (); }}}} package javase.day18; import java.io.filewriter; Importer java.io.ioException; classe publique FileWriterDemo {public static void main (String [] args) {filewriter fw = null; essayez {fw = new FileWriter ("c: //java_test//filewriteTest.txt"); // appelle la méthode d'écriture pour écrire la chaîne sur le flux fw.write ("Alex test23"); // Frais les données dans le tampon dans l'objet Stream FW.Flush (); } catch (ioException e) {e.printStackTrace (); } Enfin {try {if (fw! = null) {// Fermez la ressource de flux, mais les données du tampon interne seront rafraîchies une fois avant de fermer fw.close (); }}} catch (ioException e) {e.printStackTrace (); }}}}Imprimez le code source du code de démonstration de fichiers Java:
Package Javase.Day18; import java.io.fileReader; Importer java.io.ioException; classe publique fileRenerTest {public static void main (String [] args) {try {fileReader fr = new fileReader ("c: //java_test//systemdemo.java"); char [] buf = nouveau char [1024]; int num = 0; while ((num = fr.read (buf))! = - 1) {System.out.println (new String (buf, 0, num)); }} catch (ioException e) {e.printStackTrace (); }}} package javase.day18; import java.io.fileReader; Importer java.io.ioException; classe publique fileRenerTest {public static void main (String [] args) {try {fileReader fr = new fileReader ("c: //java_test//systemdemo.java"); char [] buf = nouveau char [1024]; int num = 0; while ((num = fr.read (buf))! = - 1) {System.out.println (new String (buf, 0, num)); }} catch (ioException e) {e.printStackTrace (); }}} Copiez le code de démonstration du fichier:
La méthode utilisée pour copy_1 () consiste à lire un caractère et à écrire un caractère.
La méthode utilisée par copy_2 () consiste à lire les caractères dans un tableau de caractères à la fois et enfin à les écrire à nouveau dans le fichier cible.
Package Javase.Day18; import java.io.fileReader; import java.io.filewriter; Importer java.io.ioException; classe publique CopyText {public static void main (String [] args) {try {copy_1 (); } catch (ioException e) {e.printStackTrace (); }} public static void copy_1 () lève ioException {filewriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader FR = nouveau 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ève ioException {filewriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader FR = nouveau FileReader ("C: //java_test//systemdemo.java"); int num = 0; char [] buf = nouveau char [1024]; while ((num = fr.read (buf))! = - 1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} package javase.day18; import java.io.fileReader; import java.io.filewriter; Importer java.io.ioException; classe publique CopyText {public static void main (String [] args) {try {copy_1 (); } catch (ioException e) {e.printStackTrace (); }} public static void copy_1 () lève ioException {filewriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader FR = nouveau 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ève ioException {filewriter fw = new FileWriter ("c: //java_test//copy_systemdemo.java"); FileReader FR = nouveau FileReader ("C: //java_test//systemdemo.java"); int num = 0; char [] buf = nouveau char [1024]; while ((num = fr.read (buf))! = - 1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} Tampon pour les flux de personnages:
L'émergence de tampons améliore l'efficacité de lecture et d'écriture des données.
Classes correspondantes: BufferedWriter, BufferedReader.
Le tampon doit être combiné avec le flux avant de pouvoir être utilisé.
La fonction du débit est améliorée en fonction de l'écoulement.
Règles de base du fonctionnement du flux IO:
1. Effacer la source et l'objectif:
Source: flux d'entrée, lecteur
Objectif: OutputStream, écrivain
2. Si les données de l'opération sont en texte brut:
Oui: Stream de caractère Non: Stream Byte est: (1) Lorsque vous utilisez le lecteur pour un flux de caractères d'entrée
(2) Utiliser InputStream pour le flux d'octets d'entrée
(3) Utiliser l'écrivain pour le flux de caractères de sortie
(4) Lorsque vous utilisez OutputStream pour le flux d'octets de sortie
3. Lorsque le système est clair, clarifiez quel objet spécifique à utiliser:
Dispositif source: mémoire, disque dur, périphérique de destination du clavier: mémoire, disque dur, console
Classe d'outils d'opération IO
[1] String filerederstringHandle (String FileName)
Lisez le fichier (spécifié par fichier) dans une chaîne;
[2] BYTE [] FileRenerByteHandle (String FileName)
Lisez le fichier (spécifié par fichier) dans un tableau d'octets;
[3] void FileWriterHandle (nom de fichier de chaîne, texte de chaîne)
Écrit une chaîne (spécifiée par texte) dans un fichier (spécifié par FileName).
Ioutil.java
Importer java.io.bufferedInputStream; Importer java.io.bufferedReader; Importer java.io.file; import java.io.fileInputStream; Importer java.io.fileReader; import java.io.ioexception; (Fourniture de la méthode ReadLine) * * @param filename * @return String * / public static String fileRederstringHandle (String filename) {StringBuilder sb = new StringBuilder (); try {bufferedReader dans = new BufferedReader (new fileReader (nouveau fichier (nom de fichier) .getAbsoluteFile ())); essayez {String S; while ((s = in.readline ())! = null) {sb.append (s); sb.append ("/ n"); }} enfin {in.close (); }} catch (ioException e) {Throw New RuntimeException (e); } return sb.toString (); } / ** * Utilisez FileInputStream + BufferedInputStream pour traiter les fichiers d'une manière BYT * * @param filename * @return byte [] * / public static byte [] fileReaderByteHandle (String filename) {byte [] data = null; try {bufferedInputStream bf = new BufferedInputStream (new FileInputStream (filename)); essayez {data = new byte [bf.available ()]; bf.read (données); } enfin {bf.close (); }} catch (ioException e) {Throw New RuntimeException (e); } return data == null? Nouveau octet [] {}: données; } / ** * Écrivez le texte spécifié dans un fichier nommé nom de fichier * * @param nom de fichier * @param texte * / public static void filewriterHandle (String filename, string text) {try {printwriter out = new printwriter (nouveau fichier (fileName) .getAbsoluTeFile ()); essayez {out.print (texte); } enfin {out.close (); }} catch (ioException e) {Throw New RuntimeException (e); }} public static void main (string [] args) lève ioException {System.out.print (fileRederstringHandle ("src / ioutil.java")); pour (octet b: fileRederByteHandle ("src / ioutil.java")) System.out.print (b); FileWriterHandle ("zj.txt", fileRederstringHandle ("src / ioutil.java")); }}