整理筆記--Java基礎(資料流操作),--java資料流

來源:互聯網
上載者:User

整理筆記--Java基礎(資料流操作),--java資料流

IO流:

操作的資料是否是純文字資料?

是:Reader,Writer

不是:InputStream,OutputStream

 

為啥位元組流用int接收而不用Byte?

-1代表返回條件(即補碼形式的11111111)用位元組流很有可能讀到它。

把它假設成一個檢測門,用int就是在資料前加上24個0,偽裝通過檢測門,在輸出的時候又會預設去掉24個0。

 

為啥不用位元組流操作字元,還要用字元流呢? 

因為在不同的編碼錶中,中文占的位元組數不一樣。

 

注意事項:

1.位元組流寫入字元要用getBytes();

2.Writer內建2k緩衝區,如果不關流將會將內容寫到緩衝區裡。

 

緩衝流 (採用了裝飾設計模式):

特有的方法:

  1.readLine() 讀一行,返回時不帶分行符號。

  2.newLine() 寫入一個分行符號。

補充:newLine和\r\n的區別在於newLine是跨平台的,而\r\n只是在window上適用。

 

Java.util.Properties:一個可以將索引值進行持久化儲存的對象(Hashtable的子類)

 

IO流核心代碼,拷貝

public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("E:\\read.txt");FileOutputStream fos = new FileOutputStream("E:\\write.txt");//int len;//byte[]arr=new byte[1024];int b;//while((len=fis.read(arr))!=-1) {//fos.write(arr,0,len);while((b=fis.read())!=-1) {fos.write(b);}fis.close();fos.close();System.out.println("檔案拷貝代碼");}

 

File類(略):

序列化:

就是把記憶體中的java對象轉換成平台無關的二進位流,從而允許把其持久地儲存在磁碟上。

 

Serializable,Externalizable兩個可序列化介面的區別:

  1.前者效能差,但是簡單所以常用。

  2.後者效能好,但是增加了編程複雜度。

 

transient關鍵字,被其修飾後,不會進行JVM預設的序列化操作。在被還原序列化後,transient 變數的值被設為初始值,如 int 型的是 0,對象型的是 null。

 

還原序列化java對象必須提供該對象的class檔案,隨著項目的升級,java如何保證兩個class檔案的相容性?

java序列化機制允許為序列化類別提供一個private static final的serialVersionUID值,用於標識java類的序列化版本。

 

writeObject和readObject方法:

  1.在序列化過程中,如果被序列化的類中定義了writeObject和readObject 方法,虛擬機器會試圖調用對象類裡的 writeObject和readObject 方法,進行使用者自訂的序列化和還原序列化。

  2.如果沒有這樣的方法,則預設調用是 ObjectOutputStream的defaultWriteObject方法以及ObjectInputStream的defaultReadObject 方法。

  3.使用者自訂的 writeObject和readObject 方法可以允許使用者控制序列化的過程,比如可以在序列化的過程中動態改變序列化的數值。

 

注意事項:

  1.反射,序列化和還原序列化都會破壞單例設計模式。

  2.通過對Singleton的序列化與還原序列化得到的對象是一個新的對象,這就破壞了Singleton的單例性。

  3.要在Singleton中定義readResolve方法,並在該方法中指定要返回的對象的建置原則,就可以防止單例被破壞。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.