Java的DataInputStream的readUTF方法是怎么讀取字符串的???

科技 未結(jié) 10 1392

大神們好,我是新手小白,今天在學(xué)習(xí)Java的IO操作中遇到一個百思不得其解的問題,下面的代碼是今天做的關(guān)于DataInputStream類的練習(xí),我很不解為什么DataInputStream的readUTF方法不需要任何參數(shù),但是卻在讀取的時候可以知道自己讀取多長,不明白他是怎么知道我當(dāng)初在寫入的時候?qū)懭氲拈L度的,他是靠什么控制讀取的范圍的呀???比如下面的程序,readUTF方法就可以知道讀取"昨天"這兩個字,是怎么知道我就剛好需要讀這兩個字,而不會把下面的內(nèi)容給讀出。很是感謝大家的回答

package com.zhang.hello;import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class IODataStreamTest { public static void main(String[] args) throws IOException {File file=new File("f:/zhang.dat"); if(!file.exists()){ file.createNewFile(); } DataInputStream dis=new DataInputStream(new FileInputStream(file)); DataOutputStream dos=new DataOutputStream(new FileOutputStream(file));int testInt=2016; double testDouble=10.12; long testLong=20161012;dos.writeInt(testInt); dos.writeDouble(testDouble); dos.writeLong(testLong); //utf-8 一個中文占3個字節(jié) dos.writeUTF("昨天"); dos.writeUTF("今天是個好日子"); dos.close();int testRInt=dis.readInt(); System.out.println(testRInt); double testRDouble=dis.readDouble(); System.out.println(testRDouble); long testRLong=dis.readLong(); System.out.println(testRLong); String testRStr=dis.readUTF();//為什么readUTF知道讀取多長 System.out.println(testRStr); dis.close(); } }

執(zhí)行結(jié)果:
2016
10.12
20161012
昨天

相關(guān)標(biāo)簽:
10條回答
  • 2023-06-22 20:13

    DataInputStream

    0 討論(0)
  • 2023-06-22 20:15

    看源碼,調(diào)用的第一句就獲取了長度int utflen = in.readUnsignedShort();這個方法的Doc :

    0 討論(0)
  • 2023-06-22 20:20

    Reads two input bytes and returns an int value in the range 0 through

    0 討論(0)
  • 2023-06-22 20:28

    readUTF的Doc:

    0 討論(0)
  • Let a be the first byte read and b be the second byte. The value returned is:

    0 討論(0)
  • 2023-06-22 20:36

    IOException - if an I/O error occurs.

    0 討論(0)
提交回復(fù)
最新問題
星漢燦爛更新 1
星漢燦爛一周幾更新一次 1
通輸卵管后多久能同房 1
買了投影儀有后悔的嗎? 5
小米手機有哪些型號,最好詳細(xì)一點! 5
輸卵管阻塞如何醫(yī)治 1
醫(yī)師不主張打的默沙東九價hpv疫苗是哪個國家進(jìn)口的? 1
天津的老影片院有哪些? 9
盆底肌松弛怎么辦 1
為啥麒麟芯片和聯(lián)發(fā)科的芯片看視頻解碼不行,更耗電? 9
猜你喜歡
黃體破裂怎么治療 黃體破裂會影響例假嗎
天津比較出名的三代試管醫(yī)院有哪家?哪里可以做
2025成都做試管的費用要多少,費用比單胎貴!
忻州能做三代試管醫(yī)院在哪里?試管助孕詳細(xì)
深圳試管助孕公司創(chuàng)新路,如何省費用!
了解上海試管三代技術(shù)費用真相?費用明細(xì)曝光!
肇慶做三代試管最權(quán)威的醫(yī)院排名一覽表,附全流程詳情
重慶試管嬰兒哪家醫(yī)院正規(guī)!費用單清清楚楚!
上海試管機構(gòu)費用多少錢,附試管機構(gòu)價格!
重慶試管助孕機構(gòu)?答案全在這里了!
熱門文章
南寧第三代試管嬰兒技術(shù)價格明細(xì)曝光
2025中國助孕生子私立醫(yī)院哪家比較好?
名單來了:試管嬰兒天津排名前十的醫(yī)院一覽
去泰國做試管比較好的中介名單一覽
去泰國做試管比較好的中介靠譜嗎?2025助孕生子醫(yī)院參考
泰國三代試管嬰兒醫(yī)院挑選指南 看看哪些醫(yī)院在榜內(nèi)
泰國三代試管嬰兒醫(yī)院醫(yī)生團(tuán)隊推薦:五家專業(yè)醫(yī)院推薦
泰國前十試管醫(yī)院推薦,快收藏一波
泰國試管嬰兒國內(nèi)正規(guī)機構(gòu)名單
泰國試管嬰兒費用解析,需要多少錢?
【全新公布】菏澤三代試管嬰兒需要多少錢,一次能夠成功嗎
熱搜第一!60歲試管嬰兒成功案例,做到這幾點懷孕不艱難
精選資訊!山西專門做試管嬰兒的醫(yī)院,山西專門做試管嬰兒的醫(yī)院有哪些
“排名”5個養(yǎng)囊一般能成幾個?
【全新公布】為什么畸形率98醫(yī)生居然說沒事?精子畸形率98%好不好調(diào)理?
睿果國際試管品牌介紹及與思普樂對
伊寧試管嬰兒醫(yī)院有哪些?伊犁州婦幼保健院位居榜首
過來人說說想生兒怎樣同房,注意測量基礎(chǔ)體溫
泰國第三代試管嬰兒費用相關(guān)介紹
鄭州第三代試管嬰兒多少錢? 試管嬰兒多少錢?
揚州私立機構(gòu)做試管成功率及價格!真相在這里!
拉薩第三代試管嬰兒貴嗎?附試管經(jīng)驗分享!
鶴崗是三代試管比較好的醫(yī)院。這個榜單值得一看。,試管醫(yī)院推薦!
孕期b超能查出什么?這幾個數(shù)據(jù)所代表的較為重要
國內(nèi)三代試管成功率高的醫(yī)院詳細(xì)排名?附費用詳情!
廣告合作方 廣告申請