Flujo de operación de datos
En el paquete IO, se proporcionan dos flujos de operación de datos independientes de la plataforma:
DataAnputStream
DataOutputStream
Por lo general, la secuencia de salida de datos producirá los datos en un determinado formato y luego leerá los datos en un determinado formato a través del flujo de entrada de datos.
La interfaz DataOutputStream define una serie de operaciones Writexxx (), que pueden escribir datos de varios tipos de datos.
Ejemplo: escribir y leer datos utilizando flujos de manipulación de datos
import java.io.dataOutputStream; import java.io.file; import java.io.fileOutputStream; Public Class DataOutputStreamDemo {public static void main (string args []) lanza la excepción {// Todas las excepciones lanzan DatautputStream dos = null; // declarar el archivo de objeto de transmisión de salida de datos f = nuevo archivo ("d:" + file.separator + "orden.txt"); // La ruta de guardado del archivo dos = nueva datautputStream (nueva fileOutputStream (f)); // Nombres de objeto de transmisión de salida de datos instanciados [] = {"camisa", "guante", "bufanda"}; // Nombre del producto Precios flotantes [] = {98.3f, 30.3f, 50.5f}; // PRICE DE PRODUCTO int nums [] = {3,2,1}; // Cantidad del producto para (int i = 0; i <names.length; i ++) {// bucle salida dos.writeChars (nombres [i]); // escribir cadena dos.WriteChar ('/t'); // escribir separador dos.writefloat (precios [i]); // Escribir precio dos.WriteChar ('/t'); // escribir delimitador dos.writeint (nums [i]); // Escribir cantidad dos.WriteChar ('/n'); // newline} dos.close (); // Cerrar transmisión de salida}}; import java.io.datainputstream; import java.io.file; import java.io.fileInputStream; public class dataInputStreamDemo {public static void main (string args []) lanza la excepción {// Todas las excepciones lanzan DataInputStream dis = null; // declarar el archivo de objeto de transmisión de entrada de datos f = nuevo archivo ("d:" + file.separator + "orden.txt"); // La ruta de guardado del archivo dis = nueva DataInputStream (nueva FileInputStream (f)); // Instanciar el objeto de secuencia de entrada de datos String String Name = NULL; // Recibir nombre de precio flotante = 0.0f; // Recibir precio int num = 0; // Recibe cantidad Char Temp [] = NULL; // recibir el nombre del producto int len = 0; // Guardar el número de datos de lectura char c = 0; // '/u0000' try {while (true) {temp = new Char [200]; // Abrir espacio len = 0; while ((c = dis.readchar ())! = '/t') {// Recibe contenido temp [len] = c; len ++; // longitud de lectura más 1} name = new String (temp, 0, len); // Cambiar la matriz de caracteres a string precio = dis.readfloat (); // leer precio dis.readchar (); // leer /t num = dis.readInt (); // leer int dis.readchar (); // leer int dis.readchar (); // leer/n System.out.printf ("Nombre: %s; precio: %5.2f; cantidad: %d/n", nombre, precio, num); }} capt (excepción e) {} dis.close (); }};Serialización de objetos
La serialización del objeto es un método para convertir objetos en flujos de datos binarios. A través de la serialización de los objetos, la transmisión o almacenamiento de objetos se puede realizar fácilmente.
Si una clase quiere admitir la inicialización, la clase debe implementar la interfaz java.io.serilizable. La interfaz se define de la siguiente manera:
PublicInterfaceserilizable {}
No hay ningún método en esta interfaz, por lo que esta clase pertenece a una interfaz de etiqueta, lo que indica que la clase que implementa la interfaz tiene algunas capacidades.
1. Serialización y deserialización de objetos
2.serialversionUid
Se introduce una constante en serie VersionUid en la operación de serialización. Esta constante se puede usar para verificar la consistencia de la versión. Cuando se deserializa, el JVM comparará la serie SerialVersionUid en la corriente de byte pasada con el VILVERSIONUID de la clase local correspondiente. Si se considera que lo mismo es consistente, se puede deserializar, de lo contrario, se producirá una excepción con versiones de serialización inconsistentes.
import java.io.serializable; Persona de clase pública implementaSerializable {Nombre de cadena privada; // Declarar el atributo de nombre, pero este atributo no es serializado privado int Age; // Declarar el atributo de edad publicPerson (nombre de cadena, int Age) {// Establecer contenido construyendo this.name = name; this.age = edad; } Publicstring toString () {// Sobrescribe el método toString () para devolver "Nombre:" + this.name + "; Age:" + this.age; }}; 3.
Si un objeto quiere salir, debe usar la clase ObjectOutputStream, que se define de la siguiente manera
Si un atributo en un objeto no quiere ser serializado, se puede declarar utilizando la palabra clave transitoria.
importJava.io.file; importJava.io.fileOutputStream; importJava.io.outputStream; importJava.io.ObjectOutputStream; publicClass SERDEMO01 {public static void main (string args []) throwsexception {archivo f = nuevo archivo ("d:" + file.separator + "test.txt"); // Defina la ruta Guardar ObjectOutPutPutStream OOS = NULL; // declarar la transmisión de salida del objeto outputStream out = newFileOutputStream (f); // File Output Stream oos = new ObjectOutputStream (Out); oos.writeObject (nueva persona ("Zhang San", 30)); // Guardar el objeto oos.close (); // Cerca } };4. Stream de entrada de objeto: ObjectInputStream
importJava.io.file; importJava.io.fileInputStream; importJava.io.inputStream; importJava.io.ObjectInputStream; publicClass serDemo02 {public static void main (string args []) throwsexception {archivo f = nuevo archivo ("d:" + file.separator + "test.txt"); // Defina la ruta Guardar ObjectInputStream OIS = NULL; // declarar la transmisión de entrada de objeto Entrada inputStream = newFileInputStream (f); // File Input Stream ois = new ObjectInputStream (entrada); // Instanciar el objeto de entrada de objeto Obj = ois.readObject (); // Leer objeto ois.close (); // cerrar System.out.println (obj); }};6. Serializar un grupo de objetos
Al emitir un objeto, solo se proporciona una operación de salida del objeto (writeObject (ObjectObj)) y no se proporcionan múltiples objetos. Si desea serializar múltiples objetos ahora, puede usar la matriz de objetos para completarla. Dado que la matriz es un tipo de datos de referencia, puede usar directamente el tipo de objeto para recibirlo.
importJava.io.file; importJava.io.ioException; importJava.io.fileOutputStream; importJava.io.outputStream; importJava.io.ObjectOutputStream; importJava.io.fileInputStream; importJava.io.inputStream; importJava.io.ObjectInputStream; publicClass serdemo05 {public static void main (string args []) throwsexception {persona per [] = {nueva persona ("zhang san", 30), newperson ("li si", 31), nueva persona ("wang wu", 32)}; ser (per); Objeto o [] = (objeto []) dser (); para (int i = 0; i <o.length; i ++) {persona p = (persona) o [i]; System.out.println (P); }} public static void ser (object obj []) throwsexception {archivo f = nuevo archivo ("d:" + file.separator + "test.txt"); // Defina la ruta Guardar ObjectOutPutPutStream OOS = NULL; // declarar la transmisión de salida del objeto outputStream out = new FileOutputStream (f); // File Output Stream oos = new ObjectOutputStream (Out); oos.writeObject (obj); // Guardar objeto oos.close (); // cerrar} objeto estático público [] dser () lanza la excepción {archivo f = nuevo archivo ("d:" + file.separator + "test.txt"); // Defina la ruta Guardar ObjectInputStream OIS = NULL; // declarar la transmisión de entrada de objeto Entrada inputStream = newFileInputStream (f); // File Input Stream ois = new ObjectInputStream (entrada); // instanciar el objeto de entrada de objeto obj [] = (objeto []) ois.readObject (); // lee el objeto ois.close (); // Cerrar devolución obj; }};El número de objetos que puede almacenar una matriz es limitado, por lo que puede usar conjuntos de clases para realizar operaciones de serialización.
Flujo comprimido
Para reducir la cantidad de datos durante la transmisión, las transmisiones comprimidas también se proporcionan en Java, y los archivos o carpetas pueden comprimirse en Zip, JAR, GZIP y otros formatos.
Esta corriente se usa menos, por lo que solo una breve introducción.
Resumir
Lo anterior es todo el contenido de este artículo sobre el flujo de operación de datos Java IO, la serialización de objetos y el análisis de código de flujo comprimido. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!