Aliran Operasi Data
Dalam paket IO, dua aliran operasi data platform-independen disediakan:
DatainputStream
DataOutputStream
Biasanya aliran output data akan mengeluarkan data dalam format tertentu, dan kemudian membaca data dalam format tertentu melalui aliran input data.
Antarmuka DataOutputStream mendefinisikan serangkaian operasi writexxx (), yang dapat menulis data dari berbagai tipe data.
Contoh: Menulis dan membaca data menggunakan aliran manipulasi data
impor java.io.dataoutputStream; impor java.io.file; impor java.io.fileoutputStream; Public Class DataOutputStreamDemo {public static void main (String args []) melempar Exception {// semua pengecualian lempar dataOutputStream dos = null; // Deklarasikan File Objek Aliran Output Data F = File Baru ("D:" + File.Separator + "order.txt"); // file save dos = new DataOutputStream (FileOutputStream baru (f)); // Data Output Data STREAM NAMA STRING NAME [] = {"Shirt", "Glove", "Scarf"}; // Nama Produk Harga float [] = {98.3f, 30.3f, 50.5f}; // harga produk int nums [] = {3,2,1}; // Kuantitas Produk untuk (int i = 0; i <name.length; i ++) {// loop output dos.writechars (nama [i]); // tulis string dos.writechar ('/t'); // tulis pemisah dos.writefloat (harga [i]); // tulis harga dos.writechar ('/t'); // tulis pembatas dos.writeint (num [i]); // tulis kuantitas dos.writechar ('/n'); // newline} dos.close (); // tutup aliran output}}; impor java.io.datainputstream; impor java.io.file; impor java.io.fileInputStream; Public Class DataInputStreamDemo {public static void main (String args []) melempar Exception {// semua pengecualian lemparan datainputStream dis = null; // Deklarasikan file objek aliran aliran input data f = file baru ("d:" + file.separator + "order.txt"); // path saving file dis = new datalputStream (FileInputStream baru (f)); // Instantiate Data Input String String Name = NULL; // menerima nama float harga = 0,0f; // menerima harga int num = 0; // Terima kuantitas char temp [] = null; // Terima nama produk int len = 0; // Simpan jumlah data baca char c = 0; // '/u0000' coba {while (true) {temp = new char [200]; // Open Space Len = 0; while ((c = dis.readchar ())! = '/t') {// Terima suhu konten [len] = c; len ++; // Baca panjang ditambah 1} name = string baru (temp, 0, len); // ubah array karakter ke string harga = dis.readfloat (); // Baca harga dis.readchar (); // baca /t num = dis.readint (); // baca int dis.readchar (); // baca int dis.readchar (); // baca/n System.out.printf ("Nama: %s; Harga: %5.2F; Kuantitas: %d/n", nama, harga, num); }} catch (Exception e) {} dis.close (); }};Serialisasi objek
Serialisasi objek adalah metode mengubah objek menjadi aliran data biner. Melalui serialisasi objek, transmisi atau penyimpanan objek dapat dengan mudah direalisasikan.
Jika suatu kelas ingin mendukung inisialisasi, kelas harus mengimplementasikan antarmuka java.io.serilizable. Antarmuka didefinisikan sebagai berikut:
PublicInterfaceserilizable {}
Tidak ada metode dalam antarmuka ini, jadi kelas ini termasuk antarmuka label, menunjukkan bahwa kelas yang mengimplementasikan antarmuka memiliki beberapa kemampuan.
1. Serialisasi dan deserialisasi objek
2.SerialVersionuid
Konstanta serialversionuid diperkenalkan dalam operasi serialisasi. Konstanta ini dapat digunakan untuk memverifikasi konsistensi versi. Saat deserializing, JVM akan membandingkan serialversionuid dalam aliran byte yang diteruskan dengan serialversionuid dari kelas yang sesuai lokal. Jika hal yang sama dianggap konsisten, itu dapat diuraikan, jika tidak, pengecualian dengan versi serialisasi yang tidak konsisten akan terjadi.
impor java.io.serializable; ImplementsSerializable {private string name; // Nyatakan atribut nama, tetapi atribut ini bukan serial int private int; // Deklarasikan Atribut Usia PublicPerson (nama string, int usia) {// atur konten dengan membuat this.name = name; this.age = usia; } publicString toString () {// menimpa metode tostring () untuk mengembalikan "nama:" + this.name + "; usia:" + this.age; }}; 3. Aliran Output Objek: ObjectOutputStream
Jika suatu objek ingin output, ia harus menggunakan kelas ObjectOutputStream, yang didefinisikan sebagai berikut
Jika suatu atribut dalam suatu objek tidak ingin diserialisasi, itu dapat dinyatakan menggunakan kata kunci sementara.
imporjava.io.file; imporJava.io.fileOutputStream; imporJava.io.outputStream; imporJava.io.objectOutputStream; PublicClass Serdemo01 {public static void main (string args []) throwsException {file f = file baru ("d:" + file.separator + "test.txt"); // Tentukan Simpan Path ObjectOutputStream OOS = NULL; // Nyatakan aliran output objek outputStream out = newFileOutputStream (f); // File Output Stream OOS = New ObjectOutputStream (out); oos.writeObject (orang baru ("Zhang San", 30)); // simpan objek oos.close (); // Menutup } };4. Aliran input objek: ObjectInputStream
imporjava.io.file; imporJava.io.fileInputStream; imporjava.io.inputstream; imporJava.io.objectInputStream; publicclass serdemo02 {public static void main (string args []) throwsException {file f = file baru ("d:" + file.separator + "test.txt"); // Tentukan save path objectInputStream ois = null; // Deklarasikan input input input inputStream input = newFileInputStream (f); // File Input Stream OIS = ObjectInputStream baru (input); // Instantiate Objek Input Stream Object Obj = ois.readObject (); // Baca objek ois.close (); // tutup system.out.println (OBJ); }};6. Serial sekelompok objek
Saat mengeluarkan suatu objek, hanya satu operasi output objek yang disediakan (WriteObject (ObjectObj)) dan tidak ada beberapa objek yang disediakan. Jika Anda ingin membuat serialisasi beberapa objek sekarang, Anda dapat menggunakan array objek untuk menyelesaikannya. Karena array adalah tipe data referensi, Anda dapat langsung menggunakan tipe objek untuk menerimanya.
imporjava.io.file; imporJava.io.ioException; imporJava.io.fileOutputStream; imporJava.io.outputStream; imporJava.io.objectOutputStream; imporJava.io.fileInputStream; imporjava.io.inputstream; imporJava.io.objectInputStream; PublicClass Serdemo05 {public static void main (String args []) ThrowsException {Person per [] = {orang baru ("Zhang San", 30), NewPerson ("Li Si", 31), orang baru ("Wang Wu", 32)}; Ser (per); Objek o [] = (objek []) dser (); untuk (int i = 0; i <o.length; i ++) {Person p = (orang) o [i]; System.out.println (p); }} public static void Ser (objek obj []) throwsException {file f = file baru ("d:" + file.separator + "test.txt"); // Tentukan Simpan Path ObjectOutputStream OOS = NULL; // Deklarasikan aliran output objek outputStream out = new fileoutputStream (f); // File Output Stream OOS = New ObjectOutputStream (out); oos.writeObject (OBJ); // simpan objek oos.close (); // tutup} objek statis public [] dser () melempar pengecualian {file f = file baru ("d:" + file.separator + "test.txt"); // Tentukan save path objectInputStream ois = null; // Deklarasikan input input input inputStream input = newFileInputStream (f); // File Input Stream OIS = ObjectInputStream baru (input); // Instantiate Object Input Stream Object Obj [] = (Object []) ois.readObject (); // baca objek ois.close (); // tutup kembali obj; }};Jumlah objek yang dapat disimpan array terbatas, sehingga Anda dapat menggunakan set kelas untuk melakukan operasi serialisasi.
Aliran terkompresi
Untuk mengurangi jumlah data selama transmisi, aliran terkompresi juga disediakan di Java, dan file atau folder dapat dikompresi menjadi zip, toples, GZIP dan format lainnya.
Aliran ini lebih sedikit digunakan, jadi hanya pengantar singkat.
Meringkaskan
Di atas adalah semua konten artikel ini tentang aliran operasi data Java IO, serialisasi objek, dan analisis kode aliran terkompresi. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!