【基礎篇】java中輸入輸出的總括——物件流程

來源:互聯網
上載者:User
文章摘錄的

不想把別人的東西佔為己有,但是想方便日後參考還是摘錄了。

煩死了,看Java編程思想三或者四,感覺老外寫書跟我們看書的習慣都不一樣的,總感覺老外寫的東西就像是在寫手冊,全面但是煩瑣。

【原則】不要告訴我曆史,告訴我怎麼做就行了。

【事實】輸出輸入類,就是TMD的簡單,為什麼非要弄成手冊,讓我這個菜鳥看不懂

【鳴謝】中國IT實驗室的總結篇

 ——————————————————————————————————————————————————

 物件流程 •     對象的持久性(Persistence)
–     能夠紀錄自己的狀態一邊將來再生的能力,叫對象的持久性
•     對象的序列化(Serialization)
–     對象通過寫出描述自己狀態的的數值來記錄自己的過程叫序列化。序列化的主要任務是寫出對象執行個體變數的數值,如果變數是另一個對象的引用,則引用的對象也要序列化。這個過程是遞迴的
•     物件流程
–     能夠輸入輸出對象的流稱為物件流程。
–     可以將對象序列化後通過對象輸入輸出資料流寫入檔案或傳送到其它地方
在java中,允許可序列化的對象在通過物件流程進行傳輸。只有實現Serializable介面的類才能被序列化, Serializable介面中沒有任何方法,當一個類聲明實現Serializable介面時,只是表明該類加入對象序列化協議
要序列化一個對象,必須與一定的對象輸出/輸入資料流聯絡起來,通過對象輸出資料流將對象狀態儲存下來(將對象儲存到檔案中,或者通過網路傳送到其他地方) ,再通過對象輸入資料流將對象狀態恢複
類ObjectOutputStream和ObjectInputStream分別繼承了介面ObjectOutput和ObjectInput,將資料流功能擴充到可以讀寫對象,前者用writeObject()方法可以直接將對象儲存到輸出資料流中,而後者用readObject()方法可以直接從輸入資料流中讀取一個對象
例 8.10 物件流程。
本例聲明Student2為序列化的類。Save方法中,建立對象輸出資料流out,並以添加方式向檔案中直接寫入當前對象out.writeObject(this);display方法中,建立對象輸入資料流in,從檔案中直接讀取一個對象in.readObject(),獲得該對象的類名、介面名等屬性,並顯示其中的成員變數。程式如下:
import java.io.*;
public class Student2 implements Serializable //序列化
{
int number=1;
String name;
Student2(int number,String n1)
{
this.number = number;
this.name = n1;
}
Student2()
{
this(0,"");
}
void save(String fname)
{
try
{
FileOutputStream fout = new FileOutputStream(fname);
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(this); //寫入對象
out.close();
}
catch (FileNotFoundException fe){}
catch (IOException ioe){}
}
void display(String fname)
{
try
{
FileInputStream fin = new FileInputStream(fname);
ObjectInputStream in = new ObjectInputStream(fin);
Student2 u1 = (Student2)in.readObject(); //讀取對象
System.out.println(u1.getClass().getName()+" "+
u1.getClass().getInterfaces()[0]);
System.out.println(" "+u1.number+" "+u1.name);
in.close();
}
catch (FileNotFoundException fe){}
catch (IOException ioe){}
catch (ClassNotFoundException ioe) {}
}
public static void main(String arg[])
{
String fname = "student2.obj";
Student2 s1 = new Student2(1,"Wang");
s1.save(fname);
s1.display(fname);
}
}
程式運行結果如下:
Student2 interface java.io.Serializable
1 Wang

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.