Java.io utiliza patrones de diseño como el modo decorativo del modo adaptador para resolver los problemas de enchufe y entrada y salida de las secuencias de caracteres.
La secuencia de bytes solo puede procesar un byte a la vez, y para facilitar la operación de datos, se agrega el flujo de socket.
Introducción al problema:
¿Por qué la transmisión buffered es más eficiente que las transmisiones de bytes de archivos ordinarios?
Para las operaciones sin almacenamiento en búfer, se debe escribir un byte para cada byte leído.
Dado que las operaciones IO que involucran discos son mucho más lentas que las operaciones de memoria, las transmisiones sin amortiguación son muy ineficientes.
Una transmisión con búfer puede leer muchos bytes a la vez, pero no escribe en el disco, pero primero se coloca en la memoria.
Cuando tenga suficiente tamaño de búfer, escríbalo en el disco a la vez. ¡Este método puede reducir la cantidad de operaciones de disco y la velocidad será mucho mayor!
Esta es la diferencia entre los dos.
Probablemente proceso:
Si no hay área de caché, cada vez que lea, se enviará una operación IO;
Hay un área de caché. Cuando lea la primera vez, X bytes se leerá y colocará en el área de caché. Luego se leerán lecturas posteriores del caché. Cuando lea al final del área de caché, X bytes se leerá nuevamente y se pondrá en el área de caché.
Es obvio que el segundo método reducirá las operaciones de IO y será más eficiente. La desventaja es que consume más memoria.
Las transmisiones de entrada y salida de Java están diseñadas con encapsulación de múltiples capas
El nivel de nivel más bajo y la salida de salida se basan en secuencias de bytes y no tienen mecanismo de caché. Generalmente se encapsulan y usan después de su uso por BufferInputStream y BufferoutputStream.
El método de lectura de BufferInputStream bloquea el hilo. BufferInputStream.read (BUF) leerá toda la secuencia de entrada en BUF antes de regresar.
BufferoutputStream.Write (BUF); emitirá el contenido en el BUF a la transmisión de salida, pero recuerde enjuagar;
También hay un imprime y printwriter relativamente fácil de usar que se puede actualizar automáticamente, pero para transmisiones de bytes.
Las secuencias de bytes generalmente se usan para transferir archivos binarios y otras transmisiones de caracteres. A menudo están envueltos con lector.
Los más utilizados son BufferInputStreamReader y PrintWrinter. El método Readline de BufferInputStreamReader es muy práctico y se enjuagará automáticamente cuando se encuentre /R /D.
PrintWrinter Mientras la propiedad de actualización esté configurada en True en el constructor, su método impreso se puede actualizar automáticamente sin descarga.
FilterInputStream y FilterOutputStream: el flujo de filtro, el flujo de búfer y el flujo de datos se heredan desde aquí.
Para las secuencias de búfer, los datos se transferirán realmente a la secuencia de salida solo cuando el búfer esté lleno, pero el método FLUSH () se puede usar para enviar datos desde el búfer sin relleno artificialmente; No se puede determinar el método de codificación del archivo y es difícil aplicar en la red.
El más comúnmente utilizado en la práctica es que el flujo de datos puede permitir que el remitente y el receptor procesen de acuerdo con la misma codificación.
DataStPutStream y DatautputStream: puede aceptar una línea de datos, puede codificarlo, o puede ser una secuencia de socket, puede encender el flujo de byte y transmisión de bytes de red, y el orden de lectura y escritura debe ser consistente, de lo contrario se producirá una excepción al leer.
DataInputStream se utiliza para decorar otras secuencias de entrada, que "permite que las aplicaciones lean los tipos de datos de Java básicos de la secuencia de entrada subyacente de una manera independiente de la máquina". Las aplicaciones pueden usar DataOutputStream para escribir datos leídos por DataInputStream.
Lo anterior es el flujo de flujo de filtrado de entrada y salida Java.io de salida y flujo de datos de datos introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!