2023學(xué)年完整公開課版JavaDataInputStream和DataOutputStream類_第1頁
2023學(xué)年完整公開課版JavaDataInputStream和DataOutputStream類_第2頁
2023學(xué)年完整公開課版JavaDataInputStream和DataOutputStream類_第3頁
2023學(xué)年完整公開課版JavaDataInputStream和DataOutputStream類_第4頁
2023學(xué)年完整公開課版JavaDataInputStream和DataOutputStream類_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

DataInputStream和DataOutputStream類2學(xué)習(xí)目標(biāo)知識目標(biāo)掌握DataInputStream類的用法掌握DataOutputStream類的用法01能力目標(biāo)能夠合理運用DataInputStream和DataOutputStream類進(jìn)行文件讀寫023DataInputStream和DataOutputStream二者分別實現(xiàn)了DataInput和DataOutput接口。DataInputStream能以一種與機(jī)器無關(guān)(當(dāng)前操作系統(tǒng)等)的方式,直接從字節(jié)輸入流讀取JAVA基本類型和String類型的數(shù)據(jù),常用于網(wǎng)絡(luò)傳輸?shù)龋ňW(wǎng)絡(luò)傳輸數(shù)據(jù)要求與平臺無關(guān))常用方法包括:intread(byte[]b)//從包含的輸入流中讀取一定數(shù)量的字節(jié),并將它們存儲到緩沖區(qū)數(shù)組b中。

intread(byte[]b,intoff,intlen)//從包含的輸入流中將最多l(xiāng)en個字節(jié)讀入一個byte數(shù)組中。

booleanreadBoolean()bytereadByte()charreadChar()doublereadDouble()floatreadFloat()

DataInputStream類4intreadInt()longreadLong()shortreadShort()intreadUnsignedByte()intreadUnsignedShort()StringreadUTF()staticStringreadUTF(DataInputin)//從流in中讀取用UTF-8修改版格式編碼的Unicode字符格式的字符串;

//然后以String形式返回此字符串。voidreadFully(byte[]b)voidreadFully(byte[]b,intoff,intlen)DataInputStream類5關(guān)于readFully和read的說明:

1、readFully方法并不是說一下就把整個文件讀完了,不用去管是否到達(dá)文件末尾的異常。它只是在讀取數(shù)據(jù)的時候,會一直把緩沖區(qū)讀滿,否則一直處于阻塞狀態(tài)而等待讀取。2、read方法只是將字節(jié)流中的數(shù)據(jù)讀完。那么數(shù)據(jù)在TCP協(xié)議傳送的過程中,可能輸入流接受到的數(shù)據(jù)并不完全,只是其中的一部分。而如果這時候的緩沖區(qū)沒有滿的話,readFully將會繼續(xù)等待,直到緩沖區(qū)裝滿。3、某些時候,可能需要讀出特定的長度的字段。比如一些數(shù)據(jù)的頭信息之類的。這時候如果你用read去讀,那么可能還沒有讀完就返回來了。但是如果去用readFully讀,那么就會完整的給你讀出來。

4、更多的時候,如果不是確定要用特定長度的數(shù)據(jù)。還是用read去讀,用readFully有點危險。DataInputStream類6DataOutputStream則能夠直接將JAVA基本類型和String類型數(shù)據(jù)寫入到其他的字節(jié)輸入流。常用方法:voidflush()//清空此數(shù)據(jù)輸出流。

intsize()//返回計數(shù)器written的當(dāng)前值,即到目前為止寫入此數(shù)據(jù)輸出流的字節(jié)數(shù)。

voidwrite(byte[]b,intoff,intlen)//將指定byte數(shù)組中從偏移量off開始的len個字節(jié)寫入基礎(chǔ)輸出流。

voidwrite(intb)//將指定字節(jié)(參數(shù)b的八個低位)寫入基礎(chǔ)輸出流。

voidwriteBoolean(booleanv)//將一個boolean值以1-byte值形式寫入基礎(chǔ)輸出流。

voidwriteByte(intv)//將一個byte值以1-byte值形式寫出到基礎(chǔ)輸出流中。

voidwriteBytes(Strings)//將字符串按字節(jié)順序?qū)懗龅交A(chǔ)輸出流中。

DataOutputStream類7voidwriteChar(intv)//將一個char值以2-byte值形式寫入基礎(chǔ)輸出流中,先寫入高字節(jié)。voidwriteChars(Strings)//將字符串按字符順序?qū)懭牖A(chǔ)輸出流。voidwriteDouble(doublev)//使用Double類中的doubleToLongBits方法將double參數(shù)轉(zhuǎn)換為一個long值,然后將該long值以8-byte值形式寫入基礎(chǔ)輸出流中,先寫入高字節(jié)。voidwriteFloat(floatv)//使用Float類中的floatToIntBits方法將float參數(shù)轉(zhuǎn)換為一個int值,然后將該int值以4-byte值形式寫入基礎(chǔ)輸出流中,先寫入高字節(jié)。

voidwriteInt(intv)//將一個int值以4-byte值形式寫入基礎(chǔ)輸出流中,先寫入高字節(jié)。

DataOutputStream類8voidwriteLong(longv)//將一個long值以8-byte值形式寫入基礎(chǔ)輸出流中,先寫入高字節(jié)。

voidwriteShort(intv)//將一個short值以2-byte值形式寫入基礎(chǔ)輸出流中,先寫入高字節(jié)。

voidwriteUTF(Stringstr)//以與機(jī)器無關(guān)方式使用UTF-8修改版編碼將一個字符串寫入基礎(chǔ)輸出流。

DataOutputStream類9DataInputStream和DataOutputStream類【例子】

FileOutputStreamfos=newFileOutputStream("xxx.data");DataOutputStreamdos=newDataOutputStream(fos);dos.writeInt(100);dos.writeUTF("DataOutputStreamTest");dos.close();FileInputStreamfis=newFileInputStream("xxx.data");DataInputStreamdis=newDataInputStream(fis);System.out.println(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論