Conceptos básicos de transmisiones IO
Las transmisiones de IO se utilizan para procesar la transmisión de datos entre dispositivos
Java opera datos a través de transmisiones
Los objetos utilizados por Java para operar transmisiones se dividen en dos tipos de transmisiones en paquetes IO: transmisiones de bytes y secuencias de caracteres: transmisiones de entrada y flujos de salida.
Clase base abstracta para transmisiones de bytes: InputStream, OutputStream
Clase base abstracta para transmisiones de personajes: lector, escritor
Nota: Los nombres de la subclase derivados de estas 4 clases son todos sufijos de los nombres de la subclase con sus nombres de clase padre.
Por ejemplo: subclase de InputStream: FileInputStream
Por ejemplo: la subclase del lector FileReader
Si crea un objeto FileWriter, una vez que se inicializa el objeto, el archivo a operar debe definirse claramente y el archivo se creará en el directorio especificado. Si hay un archivo con el mismo nombre en el directorio, se sobrescribirá.
Manifestación:
paquete javase.day18; import java.io.filewriter; import java.io.ioException; public class FileWriterDemo {public static void main (string [] args) {filewriter fw = null; Pruebe {fw = new FileWriter ("c: //java_test//filewriteTest.txt"); // Llame al método de escritura para escribir la cadena en la transmisión fw.write ("Alex test23"); // fresca los datos en el búfer en el objeto de flujo fw.flush (); } catch (ioException e) {E.PrintStackTrace (); } Finalmente {try {if (fw! = null) {// cierre el recurso de transmisión, pero el búfer interno se actualizará una vez antes de cerrar fw.close (); }}} Catch (ioException e) {E.PrintStackTrace (); }}}} paquete javase.day18; import java.io.filewriter; import java.io.ioException; public class FileWriterDemo {public static void main (string [] args) {filewriter fw = null; Pruebe {fw = new FileWriter ("c: //java_test//filewriteTest.txt"); // Llame al método de escritura para escribir la cadena en la transmisión fw.write ("Alex test23"); // fresca los datos en el búfer en el objeto de flujo fw.flush (); } catch (ioException e) {E.PrintStackTrace (); } Finalmente {try {if (fw! = null) {// cierre el recurso de transmisión, pero los datos en el búfer interno se actualizarán una vez antes de cerrar fw.close (); }}} Catch (ioException e) {E.PrintStackTrace (); }}}}Imprima el código fuente del código de demostración del archivo Java:
paquete javase.day18; import java.io.filreader; import java.io.ioException; clase pública FileReadertest {public static void main (string [] args) {try {FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); char [] buf = nuevo char [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {system.out.println (new String (buf, 0, num)); }} catch (ioException e) {E.PrintStackTrace (); }}} paquete javase.day18; import java.io.filreader; import java.io.ioException; clase pública FileReadertest {public static void main (string [] args) {try {FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); char [] buf = nuevo char [1024]; int num = 0; while ((num = fr.read (buf))! =-1) {system.out.println (new String (buf, 0, num)); }} catch (ioException e) {E.PrintStackTrace (); }}} Copie el código de demostración del archivo:
El método utilizado para copy_1 () es leer un personaje y escribir un personaje.
El método utilizado por copy_2 () es leer los caracteres en una matriz de caracteres a la vez y finalmente escribirlos nuevamente en el archivo de destino.
paquete javase.day18; import java.io.filreader; import java.io.filewriter; import 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 () lanza IOException {FileWriter fw = new 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 () lanza IOException {FileWriter fw = new FileWriter ("c: //java_test//Copy_SystemDemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = nuevo char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); Fr.Close (); }} paquete javase.day18; import java.io.filreader; import java.io.filewriter; import 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 () lanza IOException {FileWriter fw = new 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 () lanza IOException {FileWriter fw = new FileWriter ("c: //java_test//Copy_SystemDemo.java"); FileReader fr = new FileReader ("c: //java_test//systemdemo.java"); int num = 0; char [] buf = nuevo char [1024]; while ((num = fr.read (buf))! =-1) {fw.write (buf, 0, num); } fw.close (); Fr.Close (); }} Buffer para transmisiones de personajes:
La aparición de buffers mejora la eficiencia de lectura y escritura de los datos.
Clases correspondientes: BufferedWriter, BufferedReader.
El búfer debe combinarse con la transmisión antes de que pueda usarse.
La función del flujo se mejora en función del flujo.
Reglas básicas de la operación de flujo de IO:
1. Borre la fuente y el propósito:
Fuente: flujo de entrada, lector
Propósito: OutputStream, escritor
2. Si los datos de la operación son texto plano:
SÍ: SEMANA DE CARÁCTER NO: Byte Stream es: (1) Cuando se usa el lector para la transmisión de caracteres de entrada
(2) Use InputStream para la secuencia de bytes de entrada
(3) Use el escritor para la transmisión de caracteres de salida
(4) Cuando se usa la transmisión de byte de salida para salir
3. Cuando el sistema esté claro, aclare qué objeto específico usar:
Dispositivo de origen: memoria, disco duro, dispositivo de destino del teclado: memoria, disco duro, consola
Clase de herramientas de operación de IO
[1] cadena FileReaderStringHandle (nombre de archivo de cadena)
Lea el archivo (especificado por nombre de archivo) en una cadena;
[2] Byte [] FileReaderByteHandle (String FileName)
Lea el archivo (especificado por nombre de archivo) en una matriz de bytes;
[3] Void FileWriterHandle (String FileName, Text String)
Escribe una cadena (especificada por texto) en un archivo (especificado por nombre de archivo).
Ioutil.java
import java.io.bufferedInputStream; import java.io.bufferedReader; import java.io.file; import java.io.fileInputStream; import java.io.filereader; import java.io.ioException; import java.io.iM Método de Readline) * * @param FileName * @return String */ public static string filereaderStringHandle (string filename) {StringBuilder sb = new StringBuilder (); intente {BufferedReader in = new BufferedReader (nuevo FileReader (nuevo archivo (nombre de archivo) .getAbSoluteFile ())); intente {cadena s; while ((s = in.readline ())! = null) {sb.append (s); sb.append ("/n"); }} finalmente {in.close (); }} Catch (IOException e) {Throw New RuntimeException (e); } return sb.ToString (); } / ** * Use FileInputStream+BufferedInputStream para procesar los archivos de una manera de byte * * @param FileName * @return byte [] * / public static byte [] filereaderbytehandle (string filename) {byte [] data = null; intente {bufferedInputStream bf = new BufferedInputStream (nuevo FileInputStream (FileName)); intente {data = new byte [bf.available ()]; bf.read (datos); } finalmente {bf.close (); }} Catch (IOException e) {Throw New RuntimeException (e); } Datos de retorno == NULL? nuevo byte [] {}: data; } / ** * Escriba el texto especificado en un archivo llamado nombre de archivo * * @param filename * @param text * / public static void filewriterHiterHipHandle (string fileName, string text) {try {printWriter out = new PrintWriter (nuevo archivo (FileName) .getAbSoluteFile ()); intente {out.print (text); } finalmente {out.close (); }} Catch (IOException e) {Throw New RuntimeException (e); }} public static void main (string [] args) lanza ioexception {system.out.print (FileReaderStringHandle ("src/ioutil.java")); para (byte b: filereaderBytehandle ("src/ioutil.java")) System.out.print (b); FileWriterHandle ("zj.txt", FileReaderStringHandle ("src/ioutil.java")); }}