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.
También encontré este java_tip_how_read_files_quickly
¡Muy útil! Muestra qué corrientes son más eficientes.
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.