java - que - swing containers




Secuencias de E/S de Java; ¿Cuáles son las diferencias? (6)

Al aprender Java hice este esquema mental sobre java.io:

Corrientes

  • flujo orientado a bytes (8 bits)
  • bueno para datos binarios como un archivo .class de Java
  • bueno para datos "orientados a la máquina"

Lectores / Escritores

  • flujo orientado a char (utf-16) (16 bits)
  • Bueno para texto como una fuente Java
  • bueno para datos "orientados a los humanos"

Buffered

  • Siempre es útil a menos que se demuestre lo contrario.

java.io tiene muchas secuencias de I/O diferentes (FileInputStream, FileOutputStream, FileReader, FileWriter, BufferedStreams ... etc.) y estoy confundido al determinar las diferencias entre ellas. ¿Cuáles son algunos ejemplos donde se prefiere un tipo de flujo sobre otro, y cuáles son las diferencias reales entre ellos?


Este es probablemente el resumen más completo de las diversas transmisiones, Lector y Escritor en la API IO de Java:

http://tutorials.jenkov.com/java-io/overview.html

Es parte de un tutorial más grande de Java IO que cubre flujos basados ​​en bytes y caracteres.

También cubre las secuencias que se utilizan para leer y escribir datos numéricos en bruto, como los flotadores de int, etc.

También cubre las secuencias utilizadas para el análisis como PushbackInputStream y PushbackReader.


La entrada y salida de Java se define en términos de un concepto abstracto denominado "flujo", que es una secuencia de datos. Hay 2 tipos de arroyos.

  • Flujos de bytes (8 bytes) Las clases abstractas son: InputStream y OutputStream
  • Streams de caracteres (16 bit UNICODE) Æ Las clases abstractas son: Reader y Writer

Las clases java.io. * usan el patrón de diseño del decorador. El patrón de diseño del decorador asigna responsabilidades a los objetos en tiempo de ejecución. Los decoradores son más flexibles que la herencia porque la herencia asigna la responsabilidad a las clases en el momento de la compilación. Las clases java.io. * usan el patrón decorador para construir diferentes combinaciones de comportamiento en tiempo de ejecución basadas en algunas clases básicas.

del libro Java / J2EE Job Interview Companion Por K.Arulkumaran & A.Sivayini


Las especializaciones que menciona son tipos específicos utilizados para proporcionar una interfaz estándar a una variedad de fuentes de datos. Por ejemplo, un FileInputStream y un ObjectInputStream implementarán la interfaz InputStream, pero operarán en Archivos y Objetos respectivamente.


Separa cada nombre en palabras: cada mayúscula es una palabra diferente.

  • La secuencia de entrada del archivo es obtener la entrada de un archivo usando una secuencia .
  • El flujo de salida del archivo es escribir el resultado en un archivo utilizando un flujo

Y así sucesivamente y así sucesivamente

Como mmyers escribió:

Corrientes: un byte a la vez.

Lectores / Escritores: un personaje a la vez.

Buffered *: muchos bytes / caracteres a la vez.






java-io