1. Flujo de flujo básico de entrada y flujo de salida <Br /> es uno de los conceptos básicos más importantes en Java. Lectura y escritura de archivos, transmisión y recepción de red, comunicación de procesos y transmisión se utiliza en casi todos los lugares donde se requieren entrada y salida.
¿Para qué se usa la transmisión? Es para entrada y salida. ¿Por qué usan la entrada y la salida "transmisión"? Debido a que la unidad básica de entrada y salida del programa es bytes, la entrada es obtener una cadena de bytes y la salida es enviar una cadena de bytes. Sin embargo, en muchos casos, es imposible que un programa reciba todos los bytes antes del procesamiento, pero reciba un poco de procesamiento. Por ejemplo, cuando descarga World of Warcraft, es imposible descargarlo todo en la memoria y guardarlo en el disco duro, pero simplemente descargándolo y guárdelo un poco. En este momento, este método es muy adecuado.
En Java, cada transmisión es un objeto. Hay dos tipos de secuencias: flujo de entrada (inputStream) y flujo de salida (outputStream). Para el flujo de entrada, solo necesita seguir sacando los bytes de la transmisión;
¿Cómo se obtienen los objetos de flujo? Diferentes sistemas externos también tienen diferentes formas de obtener corrientes. Por ejemplo, al leer y escribir archivos, debe crear un objeto FileInputStream/FileOutputStream, mientras que la comunicación de red utiliza objetos Socket para obtener flujos de entrada y salida. En términos generales, si una clase tiene métodos como getInputStream () o getOutputStream (), significa que es entrada y salida a través de un objeto de flujo.
InputStream es un flujo de entrada.
importar java.io.file; */ public class readFileMo {// Ingreso de programa Public static void main (string [] args) {string path = "c: /boot.ini"; ; Try {IS = nuevo FileInputStream (archivo); byte [0]; Si el valor de retorno es -1, significa que no hay contenido para leer. mientras que (cada vez! = -1) {// El contenido de lectura se coloca en el búfer y ahora lo fusiona en el contenido. contenido = concatbytearrays (contenido, buffer, cada vez); printStackTrace (); em. Devuelve el resultado de la fusión del primer tamaño de bytes2 bytes1 y bytes2*/ privado byte estático [] concatbytarrays (byte [] bytes1, byte [] bytes2, int sizeOfbytes2) {byte [] resu lt = arrays.copyOf (bytes1 (bytes1 .length + sizeOfBytes2));
Aunque es muy detallado, este es de hecho el uso básico de InputStream. Tenga en cuenta que este es solo un ejemplo de cómo leer una cadena de byte de la secuencia de entrada. De hecho, Java proporciona una forma más fácil de leer archivos de texto. Se introducirá más tarde.
Usar la salida de salida de salida es algo muy simple que leer desde una transmisión. Aquí hay un ejemplo:
import java.io.outputstream; SaveFileDemo {public static void main (string [] args) lanza ioexception {string path = "c: /now.txt"; ()) {System.err.println ("El archivo no se puede crear."); ) .ToString () .getBytes ()); System.out.println ("La escritura de archivos está completa");
Java también proporciona otras operaciones de transmisión, pero todas extienden o se extienden InputStream y OutputStream. Entonces, estas dos clases son la base y deben entenderse.
2. Lector y escritor
InputStream y OutputStream se introducen, y luego se introducen el lector y el escritor. Estas dos clases en realidad envuelven InputStream y OutputStream. Sin embargo, no procesan bytes, sino personajes. Si los contenidos en un flujo son de texto, será más fácil procesar con el lector/escritor. Aquí hay un ejemplo de leer un archivo de texto usando el lector:
import java.io.filerader; String ruta = "c: /boot.ini"; read (buffer))! = -1) {content += new String (buffer, 0, count); );
En cuanto a cómo usar el escritor para escribir contenido de texto en un archivo, no daré un ejemplo aquí.
El ejemplo anterior sigue siendo la forma más común de leer archivos de texto. Java proporciona un BufferedReader, que generalmente usamos para leer archivos de texto. Aquí hay un ejemplo:
import java.io.bufferedreader; ruta = "c: /boot.ini"; {contenido + = línea + "/n"; }
3. Serialización de objetos <Br /> La serialización del objeto también es un aspecto importante de las aplicaciones de transmisión. La serialización es convertir un objeto en una cadena de bytes, que se pueden guardar o pasar a otro programa Java para su uso. ObjectOutputStream y ObjectInputStream se usan especialmente para la serialización y la deserialización. Aquí hay un ejemplo simple:
importar java.io.ObjectutStream; importar java.io.eofException; * Estas dos clases se utilizan para la serialización y la deserialización respectivamente. */ Public Class SerializationDemo {public static void main (string [] args) lanza la excepción {string path = "c: /persons.data"; F.CreateNewFile (); ruta)); El objeto se guarda en el archivo especificado vide static void writepersons (ruta de cadena) arroja ioexception {persona [] personas = nueva persona [] {nueva persona ("zhang san", 23), nueva persona ("li si", 24)} ; ////////////////////////////////////////////// /////////////////////////////////////////////// //////////////////////////////// La persona implementa serializable {private String Name Age; Persona public () {} Public Person (String Name, int Age) {this.name = name; name = name; nombre + '/' ' + ", edad =" + edad +'} ';
Este ejemplo no puede leer y escribir bytes y personajes, porque ambas clases están empaquetadas. Lo anterior es solo un ejemplo simple, y todavía hay muchas cosas a las que prestar atención si desea escribir bien la serialización. Si desea tener una comprensión más profunda de la serialización, puede verlo aquí. Este artículo solo se centra en las partes relacionadas con la transmisión. De hecho, la serialización rara vez se usa porque la serialización reduce la flexibilidad, por lo que generalmente no se usa si no la usa.