字節(jié)流,字符流,對象流,數據流

?對象流:

數據流只能實現對基本數據類型和字符串類型的讀寫,并不能讀取對象(字符串除外),如果要對某個對象進行讀寫操作,則需要對象流。

使用:

?ObjectInputStream/ObjectOutputStream是以“對象”為數據源,但是必須將傳輸的對象進行序列化與反序列化操作。


結果;


序列化和反序列化:

把Java對象轉換為字節(jié)序列的過程稱為對象的序列化。把字節(jié)序列恢復為Java對象的過程稱為對象的反序列化。

特點:

[if !supportLists]1)???? [endif]序列化能保存的元素

[if !supportLists]a)????? [endif]只能保存對象的非靜態(tài)成員變量

[if !supportLists]b)???? [endif]不能保存任何成員方法和靜態(tài)的成員變量

[if !supportLists]c)????? [endif]不保存transient成員變量

[if !supportLists]d)???? [endif]如果一個對象的成員變量是一個對象,這個對象的成員變量也會保存

[if !supportLists]e)????? [endif]串行化保存的只是變量的值,對于變量的任何修飾符,都不能保存


[if !supportLists]2)???? [endif]使用對象流把一個對象寫到文件時不僅保證該對象是序列化的,而且該對象的成員對象也必須是可序列化的。

[if !supportLists]3)???? [endif]如果一個可序列化的對象包含對某個不可序列化的對象的引用,那么整個序列化操作將會失敗,并且會拋出一個NotSerializableException。我們可以將這個引用標記為transient,那么對象仍然可以序列化。

對象序列化注意事項

[if !supportLists]1)???? [endif]同一個對象多次序列化的處理

[if !supportLists]a)????? [endif]所有保存到磁盤中的對象都有一個序列化編號

序列化一個對象中,首先檢查該對象是否已經序列化

文件夾的復制:

涉及流:字節(jié)流,字符流

BufferedInputStream,BufferedOutputStream

FileInputStream,FileOutputStream

問題分解

復制一個文件

指定目錄下的所有文件

指定目錄下的所有文件及子目錄下的所有文件


結果:


字節(jié)數組流:

ByteArrayInputStream和ByteArrayOutputStream經常用在需要流和數組之間轉化的情況!

FileInputStream是把文件當做數據源。ByteArrayInputStream則是把內存中的”某個字節(jié)數組對象”當做數據源。


結果:


裝飾器模式簡介:

動態(tài)的為一個對象增加新的功能

裝飾模式是一種用于代替繼承的技術,無須通過繼承增加子類就能擴展對象的新功能。使用對象的關聯關系代替繼承關系,更加靈活,同時避免類型體系的快速膨脹。

實現細節(jié):

抽象構件角色?? ICar

具體的構件角色Car

裝飾器角色?? SuperCar

具體的裝飾器角色FlyCar、WaterCarAICar

優(yōu)點:

[if !supportLists]1)???? [endif]擴展對象功能,比繼承靈活,不會導致類個數急劇增加

[if !supportLists]2)???? [endif]可以對一個對象進行多次裝飾,創(chuàng)建出不同行為的組合,得到功能更加大的對象

[if !supportLists]3)???? [endif]具體構建類和具體裝飾類可以獨立變化,用戶可以根據需要自己增加新的具體構件子類和具體裝飾子類

缺點

[if !supportLists]1)???? [endif]產生很多小對象。大量小對象占據內存,一定程序上影響性能

[if !supportLists]2)???? [endif]裝飾模式易于出錯,調試排查比較麻煩


IO流實現細節(jié)

(1)抽象構件角色?InputStream,OutputStream,Reader,Writer

(2)具體構件角色?FileInputStream,FileOutputStream

(3)裝飾器角色??FilterInputStream,FilterOutputStream

?? 持有一個抽象構件的引用

(4)具體裝飾角色?

BufferedInputStream,BufferedOutputStream等

IO流體系總結:


Apache IOUtils的使用_Apache FileUtils的使用:

Commons IOapache的一個開源的工具包,封裝了IO操作的相關類,使用Commons

IO可以很方便的讀寫文件,

1IOUtils:IOUtils則是提供了讀寫文件的方法

IOUtils工具類操作的相關方法

(1)String? ?IOUtils.toString(InputStream input)傳入輸入流對象返回字符串

FileUtils中提供了許多設計文件操作的 已封裝好的方法。

FileUtils工具類操作的相關方法

(1)StringFileUtils.readFileToString(File file,String encoding)

?? FileUtils.writeStringToFile(File file,Stringdata,String encoding)讀寫文

(2)FileUtils.copyFile(FilesrcFile,File destFile)復制文件

(3)FileUtils.copyURLToFile(URLsource,File destination)復制url對象到指定文件



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 對象流 我們前邊學到的數據流只能實現對基本數據類型和字符串類型的讀寫,并不能讀取對象(字符串除外),如果要對某個對...
    李紅偉_bf98閱讀 405評論 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 28,801評論 1 45
  • Echarts報表 [if !supportLists]1、[endif]引入 ECharts 文件(head部分...
    1fa38a6a3bcf閱讀 184評論 0 0
  • 只有經歷才會讓自己的內心真正強大起來,明白到什么才是真正有價值的東西。從今天開始,多做有價值的事,少扯淡,浪費光陰。
    李英榕良惠宣閱讀 135評論 0 0
  • 母愛,輪回里最難傾盡的情意 文/暖暖 想起母親,我用蹣跚的腳步無法丈量這一世給予我的深情厚愛;贊美她,再多再好的文...
    暖暖于心與君知閱讀 707評論 4 10

友情鏈接更多精彩內容