數(shù)據(jù)操作流DataOutputStream和DataInputStream的使用

數(shù)據(jù)操作流

在io包中友浸,提供了兩個(gè)與平臺(tái)無關(guān)的數(shù)據(jù)操作流:

數(shù)據(jù)輸出流(DataOutputStream)

數(shù)據(jù)輸入流 (DataInputStream)

通常數(shù)據(jù)輸出流會(huì)按照一定的格式將數(shù)據(jù)輸出,再通過數(shù)據(jù)輸入流按照一定的格式將數(shù)據(jù)讀入囊拜。

例如:有如下的訂單數(shù)據(jù)

image

如果要想使用數(shù)據(jù)操作流钢坦,則肯定要由用戶自己制定數(shù)據(jù)的保存格式究孕,必須按指定好的格式保存數(shù)據(jù),才可以使用數(shù)據(jù)輸入流將數(shù)據(jù)讀取進(jìn)來爹凹。

DataOutputStream:DataOutputStream是OutputStream的子類厨诸,此類的定義如下:

public class DataOutputStream extends FilterOutputStream implements DataOutput

此類繼承自FilterOutputStream類(FilterOutputStream是OutputStream的子類)同時(shí)實(shí)現(xiàn)了DataOutput接口,在DataOutput接口中定義了一系列的寫入各種數(shù)據(jù)的方法禾酱。writeXxx()

要想使用DataOutputStream寫入數(shù)據(jù)的話微酬,則必須指定好數(shù)據(jù)的輸出格式绘趋。

數(shù)據(jù)的寫入格式:

以上每條數(shù)據(jù)之間使用"\n"分隔,每條數(shù)據(jù)中的每個(gè)內(nèi)容之間使用"\t"分隔颗管。如下圖所示:

image

[java] view plain copy

<embed id="ZeroClipboardMovie_1" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" name="ZeroClipboardMovie_1" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" width="16" height="16" align="middle">

  1. import java.io.DataOutputStream ;
  2. import java.io.File ;
  3. import java.io.FileOutputStream ;
  4. public class DataOutputStreamDemo{
  5. public static void main(String args[]) throws Exception{ // 所有異常拋出
  6. DataOutputStream dos = null ; // 聲明數(shù)據(jù)輸出流對(duì)象
  7. File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路徑
  8. dos = new DataOutputStream(new FileOutputStream(f)) ; // 實(shí)例化數(shù)據(jù)輸出流對(duì)象
  9. String names[] = {"襯衣","手套","圍巾"} ; // 商品名稱
  10. float prices[] = {98.3f,30.3f,50.5f} ; // 商品價(jià)格
  11. int nums[] = {3,2,1} ; // 商品數(shù)量
  12. for(int i=0;i<names.length;i++){ // 循環(huán)輸出
  13. dos.writeChars(names[i]) ; // 寫入字符串
  14. dos.writeChar('\t') ; // 寫入分隔符
  15. dos.writeFloat(prices[i]) ; // 寫入價(jià)格
  16. dos.writeChar('\t') ; // 寫入分隔符
  17. dos.writeInt(nums[i]) ; // 寫入數(shù)量
  18. dos.writeChar('\n') ; // 換行
  19. }
  20. dos.close() ; // 關(guān)閉輸出流
  21. }
  22. };

使用DataOutputStream寫入的數(shù)據(jù)要使用DataInputStream讀取進(jìn)來陷遮。

[java] view plain copy

<embed id="ZeroClipboardMovie_2" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" name="ZeroClipboardMovie_2" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent" width="16" height="16" align="middle">

  1. import java.io.DataInputStream ;
  2. import java.io.File ;
  3. import java.io.FileInputStream ;
  4. public class DataInputStreamDemo{
  5. public static void main(String args[]) throws Exception{ // 所有異常拋出
  6. DataInputStream dis = null ; // 聲明數(shù)據(jù)輸入流對(duì)象
  7. File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路徑
  8. dis = new DataInputStream(new FileInputStream(f)) ; // 實(shí)例化數(shù)據(jù)輸入流對(duì)象
  9. String name = null ; // 接收名稱
  10. float price = 0.0f ; // 接收價(jià)格
  11. int num = 0 ; // 接收數(shù)量
  12. char temp[] = null ; // 接收商品名稱
  13. int len = 0 ; // 保存讀取數(shù)據(jù)的個(gè)數(shù)
  14. char c = 0 ; // '\u0000'
  15. try{
  16. while(true){
  17. temp = new char[200] ; // 開辟空間
  18. len = 0 ;
  19. while((c=dis.readChar())!='\t'){ // 接收內(nèi)容
  20. temp[len] = c ;
  21. len ++ ; // 讀取長度加1
  22. }
  23. name = new String(temp,0,len) ; // 將字符數(shù)組變?yōu)镾tring
  24. price = dis.readFloat() ; // 讀取價(jià)格
  25. dis.readChar() ; // 讀取\t
  26. num = dis.readInt() ; // 讀取int
  27. dis.readChar() ; // 讀取\n
  28. System.out.printf("名稱:%s;價(jià)格:%5.2f垦江;數(shù)量:%d\n",name,price,num) ;
  29. }
  30. }catch(Exception e){}
  31. dis.close() ;
  32. }
  33. };

5.2f 表示的是 總共的數(shù)字長度為5位帽馋,其中2位表示小數(shù),3位表示整數(shù)比吭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绽族,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衩藤,更是在濱河造成了極大的恐慌项秉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慷彤,死亡現(xiàn)場(chǎng)離奇詭異娄蔼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)底哗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門岁诉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跋选,你說我怎么就攤上這事涕癣。” “怎么了前标?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵坠韩,是天一觀的道長。 經(jīng)常有香客問我炼列,道長只搁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任俭尖,我火速辦了婚禮氢惋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稽犁。我一直安慰自己焰望,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布已亥。 她就那樣靜靜地躺著熊赖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虑椎。 梳的紋絲不亂的頭發(fā)上震鹉,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天的妖,我揣著相機(jī)與錄音,去河邊找鬼足陨。 笑死嫂粟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墨缘。 我是一名探鬼主播星虹,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼镊讼!你這毒婦竟也來了宽涌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蝶棋,失蹤者是張志新(化名)和其女友劉穎卸亮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玩裙,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兼贸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吃溅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溶诞。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖决侈,靈堂內(nèi)的尸體忽然破棺而出螺垢,到底是詐尸還是另有隱情,我是刑警寧澤赖歌,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布枉圃,位于F島的核電站,受9級(jí)特大地震影響庐冯,放射性物質(zhì)發(fā)生泄漏孽亲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一肄扎、第九天 我趴在偏房一處隱蔽的房頂上張望墨林。 院中可真熱鬧赁酝,春花似錦犯祠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隙袁,卻和暖如春痰娱,著一層夾襖步出監(jiān)牢的瞬間弃榨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工梨睁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鲸睛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓坡贺,卻偏偏與公主長得像官辈,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遍坟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容