que manejo libreria gridlayout java io stream java-io

manejo - que es awt en java



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

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.


Este es un gran tema! Te recomendaría que comiences por leer Streams de E / S :

Una secuencia de E / S representa una fuente de entrada o un destino de salida. Una secuencia puede representar muchos tipos diferentes de orígenes y destinos, incluidos archivos de disco, dispositivos, otros programas y matrices de memoria.

Los flujos admiten muchos tipos diferentes de datos, incluidos bytes simples, tipos de datos primitivos, caracteres localizados y objetos. Algunas transmisiones simplemente transmiten datos; Otros manipulan y transforman los datos de manera útil.


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.


Los flujos de bytes son en su mayoría y se utilizan ampliamente en java 1.0 tanto para caracteres como para bytes. Después de java 1.0, fue desaprobado y los flujos de caracteres juegan un papel importante. es decir, por ejemplo

BufferedReader obtendrá el carácter de la fuente y su constructor se parecerá a BufferedReader (Reader inputReader).

Aquí Reader es una clase abstracta y una de sus clases concretas es InputStreamReader, que convierte los bytes en caracteres y toma información del teclado (System.in) ...

BufferedReader: contiene un búfer interno que leerá los caracteres de la secuencia. El contador interno realiza un seguimiento del siguiente carácter que se suministrará al búfer a través de read (). InputStreamReader toma la entrada como bytes y se convierte internamente en caracteres.


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.



Corrientes: un byte a la vez. Bueno para datos binarios.

Lectores / Escritores: un personaje a la vez. Bueno para datos de texto.

Cualquier cosa "Buffered": muchos bytes / caracteres a la vez. Bueno casi todo el tiempo.