¿Cuáles son los flujos básicos para leer y escribir archivos?

1. Tres métodos de clasificación de flujos IO

1. Según la dirección del flujo, se divide en: flujo de entrada y flujo de salida

2 Según los datos del flujo Las unidades se dividen en: flujo de bytes y flujo de caracteres

3. Según las diferentes funciones del flujo, se divide en: flujo de nodos y flujo de procesamiento

2. Las cuatro clases abstractas de flujo IO:

Flujo de caracteres: Reader Writer

Flujo de bytes: InputStream (leer datos)

OutputStream ( escribir datos)

3. Métodos básicos de InputStream

int read() lanza IOException Lee un byte y lo devuelve como un número entero, si el retorno -1 ha llegado al final del flujo de entrada

void close() lanza IOException Close Stream libera recursos de memoria

long skip (long n) lanza IOException Salta n bytes sin leer

4. Métodos básicos de OutputStream

void write( int b) lanza IOException Escribe un byte de datos en el flujo de salida

void Flush() lanza IOException Escribe todos los datos almacenados en el buffer en el flujo de salida en destino

5. Escritor El método básico

escritura nula (int c) lanza IOException escribe un dato de carácter en el flujo de salida

escritura nula (String str) lanza IOException escribe un carácter en una cadena en el flujo de salida

void write(String str, int offset, int length)

Escribe caracteres de longitud de una cadena comenzando desde el desplazamiento hasta la salida stream

void Flush() lanza IOException

Escribe todos los datos almacenados en el buffer en el flujo de salida al destino

6. Métodos básicos de Reader

int read () lanza IOException Lee un carácter y lo devuelve en forma de un número entero. Si se devuelve -1, ha llegado al final del flujo de entrada

7. Tipo de flujo de nodo<. /p>

8. FileInputStream y FileOutputStream para acceder a archivos. Heredar la clase base se usa para ingresar y generar bytes en archivos.

9. FileReader y FileWriter para acceder a archivos heredan la clase base y se usan para caracteres de entrada y salida en archivos

----Salida El segundo parámetro del constructor de la secuencia se puede establecer en verdadero, lo que significa que se ingresará después del archivo existente

----Este tipo de flujo generará FileNotFoundException y debe mostrarse y capturarse

10. Flujo almacenado en búfer: el flujo almacenado en búfer debe conectarse al flujo de nodo correspondiente, lo que mejora la eficiencia de lectura y escritura. .

El método de construcción de este flujo de procesamiento debe pasar el tipo de clase base correspondiente

BufferedReader: proporciona el método readLine para que las universidades lean una línea de cadena

BufferedWriter : Proporciona una nueva línea para escribir un separador de línea, que es una nueva línea

BufferedInputStream no es de mucha utilidad

BufferedOutputStream no es de mucha utilidad

11. Convertir flujo : Se utiliza principalmente para convertir un flujo de bytes en un flujo de caracteres. ¡Más útil!

El flujo de conversión puede especificar su conjunto de codificación al construir

InputStreamReader debe estar conectado con InputStream

OutputStreamWriter debe estar conectado con OutputStream

Ejemplo: OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream (ruta del archivo);

Ejemplo de método: osw.getEncoding(); Obtener el método de codificación de la secuencia

12. Datos flujo y caracteres Flujo de matriz de sección:

El flujo de datos se utiliza principalmente para acceder a tipos de datos primitivos de Java, como largos y booleanos

El flujo de datos es un flujo de bytes

DataInputStream requiere un socket InputStream

DataOutputStream necesita estar conectado con OutputStream

Método DataInputStream: readBoolean() readInt() read……()……

readUTF(): Los métodos comúnmente utilizados para la transmisión de red son leer una cadena Unicode

El método DataOutputStream y DataInputStream corresponden básicamente al método de escritura

//Este constructor ya puede ingresar contenido en una matriz de bytes

ByteArrayOutputStream baos = new ByteArrayOutputStream ();

//Este método devuelve una matriz de bytes para obtener una matriz de bytes

baos.toByteArray ();

//Este método obtiene cuántos bytes ocupa la matriz de bytes

nuevo ByteArrayInputStream (una matriz de bytes).

disponible()

1ByteArrayOutputStream baos =

2 nuevos ByteArrayOutputStream();

3 DataOutputStream dos =

4 nuevos DataOutputStream(baos) ;

5 prueba {

6 dos.writeDouble(Math.random());

7 dos.writeBoolean(true);

8 ByteArrayInputStream bais =

9 nuevo ByteArrayInputStream(baos.toByteArray());

10 System.out.println(bais.available());

11 DataInputStream dis = new DataInputStream(bais);

12 System.out.println(dis.readDouble());

13 System.out.println(dis.readBoolean ());

14 dos.close(); dis.close();

15 } captura (IOException e) {

16 e.printStackTrace ();

17 }

12. Flujo de impresión

El flujo de impresión solo tiene un flujo de salida pero no un flujo de entrada, respectivamente, bytes de caracteres de destino. p> p>

Las dos clases proporcionan métodos Print y Println sobrecargados para la salida de múltiples tipos de datos

Las operaciones de salida de PrintWriter y PrintStream no generarán excepciones

PrintWriter y PrintStream tiene función de descarga automática

----System.setOut (recibe la clase OutputStream): se utiliza para configurar el flujo de salida predeterminado del sistema

12. Flujo de objetos

Equivalente a la serialización de C#, escriba o lea el objeto directamente

La palabra clave transitoria significa no serializar esta variable miembro

La clase que necesita ser serializada debe implementar una interfaz serializable

Métodos principales: writeObject(Object); readObject();

La lectura del tipo de objeto requiere conversión forzada del tipo de datos

1 import java.io *;

<. p> 2

3 clase pública TestObjectIO {

4 public static void main(String args[]) lanza una excepción {

5 T t = n

ew T();

6 t.k = 8;

7 FileOutputStream fos = new FileOutputStream("d:/share/java/io/testobjectio.dat");

8 ObjectOutputStream oos = nuevo ObjectOutputStream(fos);

9 oos.writeObject(t);

10 oos.flush(); 11 oos.close();

12

13 FileInputStream fis = new FileInputStream("d:/share/java/io/testobjectio.dat"); p>14 ObjectInputStream ois = new ObjectInputStream(fis);

15 T tReaded = (T)ois.readObject();

16 System.out.println(tReaded.i " " tReaded.j " " tReaded.d " " tReaded.k);

17

18 }

19 }

20

21 clase T

22 implementos Serializable

23 {

24 int i = 10

25; int j = 9;

26 doble d = 2,3;

27 transitorio int k = 15

28 }

="clear">