Поток работы данных
В пакете iO предоставляются два потока эксплуатации данных, независимые от платформы:
DataInputStream
DataOutputStream
Обычно выходной поток данных выводит данные в определенном формате, а затем прочитал данные в определенном формате через поток ввода данных.
Интерфейс DataOutputStream определяет серию операций writexxx (), которые могут записывать данные различных типов данных.
Пример: запишите и прочитайте данные с использованием потоков манипуляции с данными
импортировать java.io.dataoutputstream; Импорт java.io.file; Импорт java.io.fileOutputStream; открытый класс DataOutputStreamDemo {public static void main (String args []) бросает Exception {// Все исключения бросают dataOutputStream dos = null; // Объявит файл объекта потока вывода данных f = new File ("d:" + file.separator + "order.txt"); // Путь сохранения файла dos = new DataOutputStream (New FileOutputStream (f)); // создание данных вывода данных по потоку данных имен объекта [] = {"рубашка", "перчатка", "scarf"}; // Название продукта Цены на плавание [] = {98,3F, 30,3F, 50,5F}; // цена продукта int nums [] = {3,2,1}; // количество продукта для (int i = 0; i <names.length; i ++) {// out output dos.writechars (names [i]); // написать строку dos.writeChar ('/t'); // написать сепаратор dos.writefloat (цены [i]); // написать цену dos.writeChar ('/t'); // написать делимитер dos.writeint (nums [i]); // написать количество dos.writeChar ('/n'); // newline} dos.close (); // закрыть выходной поток}}; импортировать java.io.datainputstream; Импорт java.io.file; импортировать java.io.fileinputstream; открытый класс DataInputStreamDemo {public static void main (String args []) Throws Exception {// Все исключения бросают DataInputStream dis = null; // Объявит файл объекта ввода ввода данных FILE f = new File ("D:" + file.separator + "order.txt"); // Путь сохранения файла dis = new DataInputStream (new FileInputStream (f)); // создание экземпляра потока ввода ввода данных name name = null; // получение имени цена плавания = 0,0F; // получение цены int num = 0; // получение количества char temp [] = null; // получение названия продукта int len = 0; // Сохранить количество данных чтения char c = 0; // '/u0000' try {while (true) {temp = new char [200]; // открытое пространство Len = 0; while ((c = dis.readchar ())! = '/t') {// получение контента temp [len] = c; Len ++; // Читать длину плюс 1} name = new String (temp, 0, len); // Измените массив символов на строковую цену = dis.readfloat (); // Читать цену dis.readchar (); // read /t num = dis.readint (); // Читать int dis.readchar (); // Читать int dis.readchar (); // read/n System.out.printf («Имя: %s; цена: %5.2f; количество: %d/n», имя, цена, num); }} catch (Exception e) {} dis.close (); }};Сериализация объекта
Сериализация объекта - это метод превращения объектов в бинарные потоки данных. Благодаря сериализации объектов, передача или хранение объектов могут быть легко реализованы.
Если класс хочет поддерживать инициализацию, класс должен реализовать интерфейс java.io.iserilizable. Интерфейс определяется следующим образом:
publicInterfaceserilizable {}
В этом интерфейсе нет метода, поэтому этот класс принадлежит интерфейсу метки, указывая, что класс, реализующий интерфейс, имеет некоторые возможности.
1. Сериализация и десериализация объектов
2. SerialVersionUid
В операции сериализации вводится постоянная сериала. Эта константа может быть использована для проверки согласованности версии. При десериализации JVM будет сравнивать SerialVersionUID в пропущенном в байтовом потоке с сериальноверсиидом локального соответствующего класса. Если то же самое считается последовательным, это может быть опустошен, в противном случае произойдет исключение с непоследовательными версиями сериализации.
импортировать java.io.serializable; Public Class Person реализует сериоризуемый {Private String name; // Объявит атрибут имени, но этот атрибут не сериализован частного возраста; // Объявит Publicperson ATRIBUTE ARIBUTE (имя строки, int age) {// Установить контент, построив это.name = name; this.age = возраст; } publicString toString () {// перезаписать метод toString (), чтобы вернуть «имя:» + this.name + »; age:" + this.age; }}; 3. Поток вывода объекта: объект
Если объект хочет вывести, он должен использовать класс objectOutputStream, который определяется следующим образом
Если атрибут в объекте не хочет быть сериализованным, его можно объявить с помощью ключевого слова Transient.
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"); // Определите путь сохранения objectOutputStream oos = null; // объявить объект выходного потока outputstream out = newFileOutputStream (f); // Файл выходной поток oos = new objectOutputStream (out); OOS.WriteObject (новый человек ("Zhang San", 30)); // Сохранить объект oos.close (); // Закрывать } };4. Поток ввода объекта: 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"); // Определите объект сохранения объекта ois = null; // Объявит поток ввода объекта inputStream input = newFileInputStream (f); // Файл ввода потока ois = new ObjectInputStream (input); // создание экземпляра объекта ввода потока объекта OBJ = OIS.ReadObject (); // Читать объект ois.close (); // Close System.out.println (obj); }};6. Сериализуйте группу объектов
При выводе объекта предоставляется только одна операция вывода объекта (writebject (objectObj)) и не предоставляется несколько объектов. Если вы хотите сериализовать несколько объектов сейчас, вы можете использовать массив объектов для его завершения. Поскольку массив является эталонным типом данных, вы можете напрямую использовать тип объекта для его получения.
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 Person ("Wang wu", 32)}; ser (per); Объект o [] = (Object []) dser (); for (int i = 0; i <o.length; i ++) {человек p = (человек) o [i]; System.out.println (P); }} public static void ser (Object obj []) throwSexception {file f = new File ("d:" + file.separator + "test.txt"); // Определите путь сохранения objectOutputStream oos = null; // объявить объект вывода потока outputStream out = new FileOutputStream (f); // Файл выходной поток oos = new objectOutputStream (out); OOS.WriteObject (OBJ); // Сохранить объект oos.close (); // закрыть} public static object [] dser () бросает исключение {file f = new File ("d:" + file.separator + "test.txt"); // Определите объект сохранения объекта ois = null; // Объявит поток ввода объекта inputStream input = newFileInputStream (f); // Файл ввода потока ois = new ObjectInputStream (input); // создать экземпляр объекта ввода потока объекта Obj [] = (Object []) OIS.ReadObject (); // Читать объект ois.close (); // закрыть возврат obj; }};Количество объектов, которые массив может хранить, ограничено, поэтому вы можете использовать наборы классов для выполнения сериализации.
Сжатый поток
Чтобы уменьшить объем данных во время передачи, сжатые потоки также предоставляются в Java, а файлы или папки могут быть сжаты в Zip, Jar, Gzip и другие форматы.
Этот поток используется меньше, так что просто краткое введение.
Суммировать
Выше приведено все содержание этой статьи о потоке операции данных Java IO, сериализации объектов и анализе сжатого потока. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!