亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java IO數據操作流、對象序列化、壓縮流代碼解析

2024-07-13 10:16:04
字體:
來源:轉載
供稿:網友

數據操作流

在io包中,提供了兩個與平臺無關的數據操作流:

數據輸入流(DataInputStream)

數據輸出流(DataOutputStream)

通常數據輸出流會按一定格式將數據輸出,再通過數據輸入流按照一定格式將數據讀入

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

DataOutputStream接口定義了一系列的writeXxx()的操作,可以寫入各種數據類型的數據。

范例:使用數據操作流寫入與讀出數據

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

java/233049.html">java;">import java.io.DataOutputStream ; import java.io.File ; import java.io.FileOutputStream ; public class DataOutputStreamDemo{   public static void main(String args[]) throws Exception{  // 所有異常拋出     DataOutputStream dos = null ;      // 聲明數據輸出流對象     File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路徑     dos = new DataOutputStream(new FileOutputStream(f)) ;  // 實例化數據輸出流對象     String names[] = {"襯衣","手套","圍巾"} ; // 商品名稱     float prices[] = {98.3f,30.3f,50.5f} ;   // 商品價格     int nums[] = {3,2,1} ; // 商品數量     for(int i=0;i<names.length;i++){ // 循環輸出       dos.writeChars(names[i]) ; // 寫入字符串       dos.writeChar('/t') ;  // 寫入分隔符       dos.writeFloat(prices[i]) ; // 寫入價格       dos.writeChar('/t') ;  // 寫入分隔符       dos.writeInt(nums[i]) ; // 寫入數量       dos.writeChar('/n') ;  // 換行     }     dos.close() ;  // 關閉輸出流   } }; 
import java.io.DataInputStream ; import java.io.File ; import java.io.FileInputStream ; public class 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)) ; // 實例化數據輸入流對象     String name = null ;  // 接收名稱     float price = 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) ; // 將字符數組變為String         price = dis.readFloat() ;  // 讀取價格         dis.readChar() ;  // 讀取/t         num = dis.readInt() ;  // 讀取int         dis.readChar() ;  // 讀取/n         System.out.printf("名稱:%s;價格:%5.2f;數量:%d/n",name,price,num) ;       }     }catch(Exception e){}     dis.close() ;   } }; 

對象序列化

對象序列化就是把對象變為二進制數據流的一種方法,通過對象的序列化可以方便的實現對象的傳輸或儲存。

如果一個類想支持初始化,則該類必須實現java.io.Serilizable接口。該接口定義如下:

publicinterfaceSerilizable{}

該接口中不存在方法,因此該類屬于一個標示接口,表示實現該的接口的類具備某種能力。

1.對象的序列化與反序列化

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

2.serialVersionUID

在序列化的操作中引入了一個serialVersionUID常量,可以通過此常量來驗證版本的一致性,在進行反序列化的時候,JVM會把傳進來的字節流中的serialVersionUID與本地對應類的serialVersionUID進行比較,如果相同就認為是一致的,可以進行反序列化,否則就會出現序列化版本不一致的異常。

import java.io.Serializable ; public class Person implementsSerializable{      private String name ;    // 聲明name屬性,但是此屬性不被序列化      private int age ;         // 聲明age屬性      publicPerson(String name,int age){     // 通過構造設置內容           this.name= name ;           this.age= age ;      }      publicString toString(){  // 覆寫toString()方法           return"姓名:" + this.name + ";年齡:" + this.age;      } }; 

3. 對象輸出流:ObjectOutputStream

一個對象要想進行輸出,就必須使用ObjectOutputStream類,該類定義如下

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

如果一個對象中的某個屬性不希望被序列化的話,則可以使用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(new Person("張三",30));   // 保存對象       oos.close() ;   // 關閉 } }; 

4. 對象輸入流:ObjectInputStream

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

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") ;    //定義保存路徑       ObjectInputStream ois = null ;     // 聲明對象輸入流       InputStream input = newFileInputStream(f) ;     // 文件輸入流       ois = new ObjectInputStream(input) ;   // 實例化對象輸入流       Object obj = ois.readObject() ;     // 讀取對象       ois.close() ;    // 關閉       System.out.println(obj) ; } }; 

6.序列化一組對象

對象輸出時只提供了一個對象的輸出操作(writeObject(Objectobj)),并沒有提供多個對象的輸出,如果現在要對多個對象進行序列化的操作,則可以使用對象數組完成,由于數組是引用數據類型,所以可以直接使用Object類型進行接收。

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

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("張三",30),newPerson("李四",31),           new Person("王五",32)};       ser(per) ;       Object o[] = (Object[])dser() ;       for(int i=0;i<o.length;i++){           Person p = (Person)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() throws Exception{       File f = new File("D:" +File.separator + "test.txt") ;    //定義保存路徑       ObjectInputStream ois = null ;     // 聲明對象輸入流       InputStream input = newFileInputStream(f) ;     // 文件輸入流       ois = new ObjectInputStream(input) ;   // 實例化對象輸入流       Object obj[] =(Object[])ois.readObject() ;    // 讀取對象       ois.close() ;    // 關閉       return obj ; } }; 

數組能儲存的對象數量有限,因此可以使用類集進行序列化的操作。

壓縮流

在Java中為了減少傳輸時的數據量也專門提供了壓縮流,可以將文件或者文件夾壓縮成ZIP、JAR、GZIP等格式。

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

該流使用較少,因此只做簡要介紹。

java,io,序列化,對象序列化,io流發送對象,java對象反序列化

總結

以上就是本文關于java IO數據操作流、對象序列化、壓縮流代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线视频欧美性高潮| 久久久精品一区二区| 亚洲天堂网站在线观看视频| 欧美人成在线视频| 另类专区欧美制服同性| 欧美一级视频在线观看| 久久久久国产精品免费网站| 狠狠躁夜夜躁人人躁婷婷91| 亚洲成人激情在线观看| 欧美精品午夜视频| 秋霞午夜一区二区| 国产一区二区三区四区福利| 成人欧美一区二区三区在线| 国产日韩欧美成人| 亚洲国产精品免费| 欧美电影免费观看高清| 91精品视频大全| 欧美另类69精品久久久久9999| 91久久在线播放| 中文字幕在线亚洲| 欧美成年人网站| 欧美午夜精品在线| 亚洲人成亚洲人成在线观看| 成人免费观看49www在线观看| 韩国精品美女www爽爽爽视频| 中文字幕欧美专区| 亚洲欧美国产视频| 欧美极品美女电影一区| 日本sm极度另类视频| 九九九久久国产免费| 国产ts人妖一区二区三区| 国产精品久久久久久五月尺| 国产精品丝袜久久久久久不卡| 精品亚洲国产成av人片传媒| 最近2019中文字幕在线高清| 国产精品久久久久999| 色狠狠久久aa北条麻妃| 国产精品高潮在线| 人人做人人澡人人爽欧美| 国产网站欧美日韩免费精品在线观看| 国产91网红主播在线观看| 一区二区三区黄色| 国产一区二区三区免费视频| 欧美性极品xxxx娇小| 在线电影欧美日韩一区二区私密| 国产91久久婷婷一区二区| 亚洲精品99久久久久中文字幕| 日韩有码在线观看| 中文字幕精品在线视频| 成人激情春色网| 国产精品女人网站| 色偷偷偷综合中文字幕;dd| 韩国精品久久久999| 狠狠久久五月精品中文字幕| 亚洲精品天天看| 国产激情久久久| 日韩中文字幕视频在线| 国产日韩在线看| 91成品人片a无限观看| 久久精品91久久久久久再现| 国产精品激情av在线播放| 欧美激情一区二区久久久| 91黑丝在线观看| 欧美成人自拍视频| 三级精品视频久久久久| 欧美另类在线观看| 欧美一级片免费在线| 国产日韩精品在线观看| 97视频在线观看网址| 亚洲大胆人体视频| 欧美黑人xxxx| 国产+人+亚洲| 亚洲精品国产综合区久久久久久久| 亚洲精品之草原avav久久| 最近2019中文字幕一页二页| 亚洲伦理中文字幕| 欧美最顶级的aⅴ艳星| 精品久久久久久久大神国产| 国产视频精品xxxx| 国产精品久久久久久中文字| 国产精品日韩电影| 欧美日韩激情小视频| 日韩最新免费不卡| 亚洲天堂成人在线| 欧美老肥婆性猛交视频| 亚洲日韩中文字幕在线播放| 7777精品视频| 一本色道久久88亚洲综合88| 色噜噜狠狠狠综合曰曰曰88av| 亚洲国产欧美日韩精品| 欧美精品激情视频| 欧美日韩国产激情| 亚洲视频在线观看视频| 日韩av在线一区| 国产91在线高潮白浆在线观看| 久久精品小视频| 欧美视频在线看| 国产午夜精品视频免费不卡69堂| 最近2019免费中文字幕视频三| 国产精品xxx视频| 国产精品日日做人人爱| 91在线观看免费网站| 亚洲精品成人网| 亚洲男人天堂网| 69国产精品成人在线播放| 日本欧美中文字幕| 亚洲成色www8888| 亚洲精品国产suv| 亚洲性生活视频| 136fldh精品导航福利| 欧美日韩一区二区免费在线观看| 欧美性69xxxx肥| 亚洲天堂网站在线观看视频| 亚洲综合中文字幕在线| 成人性生交大片免费看小说| 久久久久久综合网天天| 青草成人免费视频| 国产91精品黑色丝袜高跟鞋| 国外日韩电影在线观看| 中文字幕精品久久久久| 久久中文字幕在线视频| www.亚洲免费视频| 国产精品xxx视频| 成人网页在线免费观看| 国产亚洲精品久久久久久777| 2019中文字幕在线观看| 亚洲一区二区免费| 国产日韩欧美电影在线观看| 国产自摸综合网| 国产精品精品视频一区二区三区| 91地址最新发布| 日韩资源在线观看| 色综合久久中文字幕综合网小说| 亚洲欧洲xxxx| 成人乱色短篇合集| 亚洲男人的天堂网站| 国产美女扒开尿口久久久| 亚洲最新在线视频| 欧美激情中文字幕乱码免费| 美女视频黄免费的亚洲男人天堂| 国产精品老女人精品视频| 亚洲精品在线91| 亚洲精品自产拍| 日韩精品在线私人| 国产精品成人av在线| 秋霞成人午夜鲁丝一区二区三区| 国产精品一区二区三区久久久| 国产亚洲精品久久久久久| 欧美黑人视频一区| 精品视频一区在线视频| 中文字幕日韩av综合精品| 国产精品视频久久久久| 97精品国产aⅴ7777| 这里只有视频精品| 欧美日韩精品中文字幕| 亚洲免费人成在线视频观看| 亚洲美女av电影| 欧美激情中文网| 国产成人综合亚洲| 动漫精品一区二区| 欧美成人一区在线| 日韩专区在线播放| 国产精品久久av| 亚洲人成在线播放|