Flux d'opération de données
Dans le package IO, deux flux de fonctionnement de données indépendants de la plate-forme sont fournis:
Datainputstream
DataOutputStream
Habituellement, le flux de sortie de données sortira les données dans un certain format, puis lira les données dans un certain format via le flux d'entrée de données.
L'interface DataOutputStream définit une série d'opérations Writexxx (), qui peuvent écrire des données de divers types de données.
Exemple: écrivez et lisez des données à l'aide de flux de manipulation de données
import java.io.dataOutputStream; Importer java.io.file; Importer java.io.fileOutputStream; classe publique DataOutputStreamDemo {public static void main (String args []) lève une exception {// toutes les exceptions lancent dataOutStream DOS = null; // Déclare le fichier d'objet de flux de sortie de données f = nouveau fichier ("d:" + file.separator + "order.txt"); // le chemin de sauvegarde du fichier dos = new DataOutputStream (new FileOutputStream (f)); // Noms de chaîne d'objets de flux de sortie de données instanciés [] = {"Shirt", "Glove", "Scarf"}; // Nom du produit Prix de flottement [] = {98.3f, 30.3f, 50.5f}; // prix du produit int nums [] = {3,2,1}; // Quantité de produit pour (int i = 0; i <names.length; i ++) {// sortie de boucle dos.writechars (noms [i]); // Écrivez String DOS.WRITECHAR ('/ T'); // Écrivez le séparateur dos.writefloat (prix [i]); // Écrivez le prix dos.writechar ('/ t'); // Écrivez Delimiter Dos.WriteInt (nums [i]); // Écrivez la quantité dos.writechar ('/ n'); // newline} dos.close (); // Fermer le flux de sortie}}; import java.io.datainputStream; Importer java.io.file; import java.io.fileInputStream; classe publique DatainputStreamDemo {public static void main (String args []) lève une exception {// toutes les exceptions lancent datainputStream dis = null; // Déclare le fichier d'objet de flux d'entrée de données f = new File ("d:" + file.separator + "order.txt"); // Le Path Saining du fichier Dis = new DatainputStream (new FileInputStream (F)); // Instancier la chaîne d'objet de flux d'entrée de données Nom = NULL; // reçoit le nom de flotteur = 0,0f; // reçoit le prix int num = 0; // reçoit la quantité de charbon Temps [] = null; // Recevoir le nom du produit int len = 0; // Enregistrer le nombre de données de lecture char C = 0; // '/ u0000' try {while (true) {temp = new char [200]; // Open Space Len = 0; while ((c = dis.readchar ())! = '/ t') {// reçoit le contenu temp [len] = c; len ++; // lisez la longueur plus 1} name = new String (temp, 0, len); // modifie le tableau de caractères en chaîne prix = dis.readfloat (); // lire le prix dis.readchar (); // read / t num = dis.readInt (); // lire int.readchar (); // lire int.readchar (); // lecture / n système.out.printf ("Nom:% s; prix:% 5.2f; quantité:% d / n", nom, prix, num); }} catch (exception e) {} dis.close (); }};Sérialisation des objets
La sérialisation des objets est une méthode de transformation des objets en flux de données binaires. Grâce à la sérialisation des objets, la transmission ou le stockage des objets peuvent être facilement réalisés.
Si une classe souhaite prendre en charge l'initialisation, la classe doit implémenter l'interface java.io.serilizable. L'interface est définie comme suit:
publicInterfaceSerizable {}
Il n'y a pas de méthode dans cette interface, donc cette classe appartient à une interface d'étiquette, indiquant que la classe implémentant l'interface a des capacités.
1. Sérialisation et désérialisation des objets
2.SerialVersionUid
Une constante de Versionnionuid est introduite dans l'opération de sérialisation. Cette constante peut être utilisée pour vérifier la cohérence de la version. Lors de la désérialisation, le JVM comparera le SerialVersionUid dans le flux passé dans l'octet avec le SerialVersionUid de la classe correspondante locale. Si la même chose est considérée comme cohérente, elle peut être désérialisée, sinon une exception avec des versions de sérialisation incohérentes se produira.
import java.io.serializable; Personne de classe publique ImpllementSerializable {nom de chaîne privée; // Déclarer l'attribut de nom, mais cet attribut n'est pas l'âge privé sérialisé; // Déclare l'âge d'âge publicPerson (nom de chaîne, int age) {// Définissez le contenu en construisant this.name = name; this.age = âge; } PublicString toString () {// Écraser la méthode toString () pour renvoyer "Nom:" + this.name + "; âge:" + this.age; }}; 3. Stream de sortie de l'objet: ObjectOutStream
Si un objet veut sortir, il doit utiliser la classe objectOutputStream, qui est définie comme suit
Si un attribut dans un objet ne veut pas être sérialisé, il peut être déclaré en utilisant le mot-clé transitoire.
importjava.io.file; importjava.io.fileOutputStream; importjava.io.outputStream; importjava.io.ObjectOutputStream; publicClass Serdemo01 {public static void main (String args []) throwSException {file f = new File ("d:" + file.separator + "test.txt"); // Définissez le chemin de sauvegarde ObjectOutputStream OOS = NULL; // Déclare le flux de sortie de l'objet OutputStream out = newFileOutputStream (f); // Stream de sortie de fichier OOS = new ObjectOutputStream (out); OOS.WriteObject (New Person ("Zhang San", 30)); // Enregistrer l'objet oos.close (); // Fermer } };4. flux d'entrée d'objet: ObjectInputStream
importjava.io.file; importjava.io.fileInputStream; importjava.io.inputStream; importjava.io.objectInputStream; publicClass Serdemo02 {public static void main (String args []) throwSException {file f = new File ("d:" + file.separator + "test.txt"); // Définissez le chemin de sauvegarde objectInputStream oiS = null; // Déclare le flux d'entrée d'objet InputStream Input = newFileInputStream (f); // Fichier Input Stream OIS = new ObjectInputStream (Input); // Instanciate Object Input Stream Object obj = ois.readObject (); // Lire objet ois.close (); // close System.out.println (obj); }};6. sérialiser un groupe d'objets
Lors de la sortie d'un objet, une seule opération de sortie d'objet est fournie (writeObject (objectObj)) et aucun objet multiple n'est fourni. Si vous souhaitez sérialiser plusieurs objets maintenant, vous pouvez utiliser le tableau d'objets pour le terminer. Étant donné que le tableau est un type de données de référence, vous pouvez utiliser directement le type d'objet pour le recevoir.
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 {Person per [] = {new Person ("Zhang San", 30), newperson ("li si", 31), new personne ("wang wu", 32)}; ser (per); Objet o [] = (objet []) dSer (); pour (int i = 0; i <o.length; i ++) {personne p = (personne) o [i]; System.out.println (P); }} public static void ser (objet obj []) throwSException {file f = new file ("d:" + file.separator + "test.txt"); // Définissez le chemin de sauvegarde ObjectOutputStream OOS = NULL; // Déclare le flux de sortie de l'objet OutputStream out = new FileOutputStream (f); // Stream de sortie de fichier OOS = new ObjectOutputStream (out); oos.writeObject (obj); // Enregistrer l'objet oos.close (); // Close} public static objet [] dSer () lève une exception {file f = new file ("d:" + file.separator + "test.txt"); // Définissez le chemin de sauvegarde objectInputStream oiS = null; // Déclare le flux d'entrée d'objet InputStream Input = newFileInputStream (f); // Fichier Input Stream OIS = new ObjectInputStream (Input); // Instancier l'objet d'objet Stream objet obj [] = (objet []) ois.readObject (); // Lire l'objet ois.close (); // Fermer le retour obj; }};Le nombre d'objets qu'un tableau peut stocker est limité, vous pouvez donc utiliser des ensembles de classes pour effectuer des opérations de sérialisation.
Flux comprimé
Afin de réduire la quantité de données pendant la transmission, des flux compressés sont également fournis en Java et les fichiers ou les dossiers peuvent être compressés en format Zip, Jar, GZIP et d'autres formats.
Ce flux est moins utilisé, donc juste une brève introduction.
Résumer
Ce qui précède est tout le contenu de cet article sur le flux de fonctionnement des données Java IO, la sérialisation des objets et l'analyse du code de flux compressé. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!