




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
流和文件
Java程序設(shè)計(jì)教程本章主要內(nèi)容Java的輸入/輸出流模型字符流的處理字節(jié)流的處理文件小結(jié)2024/2/4
2/3011.1Java的輸入/輸出流模型流:流是指在計(jì)算機(jī)的輸入與輸出之間運(yùn)動(dòng)的數(shù)據(jù)的序列,就像水管中的水流。2024/2/4
3/35輸入流:代表從外設(shè)流入計(jì)算機(jī)的數(shù)據(jù)序列。輸出流:代表從計(jì)算機(jī)流向外設(shè)的數(shù)據(jù)序列。2024/2/4
4/35通過流讀取數(shù)據(jù)的基本流程2024/2/4
5/35Java中與相關(guān)的類2024/2/4
6/35
11.2字符流的處理2024/2/4
7/35ReaderBufferedReaderLineNumberReaderCharArrayReaderInputStreamReaderFileReaderFileterReaderPushbackReaderPipedReaderStringReader
11.2字符流的處理2024/2/4
8/35WriterBufferedWriterCharArrayWriterOutputStreamWriterFileWriterFileterWriterStringWriterPipedwriterPrinterWriterStringWriter字符輸入相關(guān)的方法(read類)方法功能read()讀取一個(gè)字符,返回范圍在0~65535之間的int值,如果已到達(dá)流的末尾,則返回-1。read(char[]cbuf)將字符讀入數(shù)組cbuf。返回讀取的字符數(shù),如果已到達(dá)流的末尾,則返回-1。read(CharBuffertarget)試圖將字符讀入指定的字符緩沖區(qū)。ready()判斷是否準(zhǔn)備讀取此流。reset()重置該流。skip(longn)跳過n個(gè)字符。mark(intreadAheadLimit)標(biāo)記流中的當(dāng)前位置。close()關(guān)閉流并釋放與之關(guān)聯(lián)的所有資源。2024/2/4
9/35例11.1:從標(biāo)準(zhǔn)輸入設(shè)備輸入數(shù)據(jù)。importjava.io.*;publicclasseg111{ publicstaticvoidmain(String[]args){ Readerreader=newInputStreamReader(System.in); try{ for(inti=0;i<5;i++){//讀入并輸出前5個(gè)字符 charc=(char)reader.read(); System.out.print(""+c); } System.out.println(); reader.close(); }catch(IOExceptionex){ ex.printStackTrace(); } }}2024/2/4
10/35字符輸出相關(guān)的方法(Writer)方法功能append(charc)將字符c添加到writer。append(CharSequencecsq)將字符序列添加到writer。append(CharSequencecsq,intstart,intend)將指定字符序列的子序列添加到writer。write(char[]cbuf)寫入字符數(shù)組。write(intc)寫入單個(gè)字符。write(Stringstr)寫入字符串。write(Stringstr,intoff,intlen)寫入字符串的某一部分。close()關(guān)閉此流,但要先刷新它。flush()刷新該流的緩沖。2024/2/4
11/35例11.2:把一個(gè)字符串寫到文件h.txt中。importjava.io.*;publicclasseg11_2{publicstaticvoidmain(String[]args)throwsIOException{Stringstr=newString("HelloWorld!");Stringstr1="mynameisJava。";Writerfw=newFileWriter("h.txt");//創(chuàng)建一個(gè)h.txt文件
fw.write(str1);//通過管道把str1寫入文件h.txtfw.append(str,6,12);//把World!寫入到文件fw.close();}}2024/2/4
12/35其他字符流的使用常用的字符流類用于在數(shù)據(jù)流中需要完成字符和字節(jié)轉(zhuǎn)換的情況。InputStreamReader類OutputStreamWriter類帶有默認(rèn)緩沖的字符輸入流和輸出流,通常用于整行字符或整段字符的讀寫
BufferedReader類BufferedWriter類以讀寫字符文件為目地的文件內(nèi)容讀寫流FileReader類FileWriter類。2024/2/4
13/3511.3字節(jié)流的處理
2024/2/4
14/35InputStreamFileInputStreamPipedInputStreamFilterInputStreamLineNumberInputStreamDataInputStreamBufferedInputStreamPushbackInputStreamByteArrayInputStreamSquenceInputStreamStringBufferInputStreamObjectInputStreamOutputStreamFileOutputStreamPipedOutputStreamFilterOutputStreamDataOutputStreamBufferedOutputStreamPrintOutputStreamByteArrayOutputStreamObjectInputStreamInputStream類常用方法方法功能read()從輸入流中讀取數(shù)據(jù)的下一個(gè)字節(jié),并返回0-255間的整數(shù)。read(byte[]b)從輸入流中讀取一定數(shù)量的字節(jié),并將其存儲(chǔ)在緩沖區(qū)數(shù)組b中,并返回讀取的字節(jié)數(shù)。skip(longn)跳過和丟棄此輸入流中數(shù)據(jù)的n個(gè)字節(jié)available()返回輸入流可以讀?。ɑ蛱^)的字節(jié)數(shù)。close()關(guān)閉輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。reset()重置輸入流的讀取位置。mark(intreadlimit)在輸入流中標(biāo)記當(dāng)前的位置。read(byte[]b,intoff,intlen)將輸入流中讀取len個(gè)數(shù)據(jù)存入數(shù)組b從索引off開始的位置,并返回讀取字節(jié)數(shù)。2024/2/4
15/35OutputStream類常用方法方法功能write(byte[]b)將b.length個(gè)字節(jié)從b數(shù)組寫入此輸出流。flush()刷新輸出流并強(qiáng)制寫出所有緩沖的輸出字節(jié)。write(byte[]b,intoff,intlen)將b數(shù)組中偏移量off開始的len個(gè)字節(jié)寫入輸出流。write(intb)將b個(gè)的字節(jié)寫入此輸出流。close()關(guān)閉輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。2024/2/4
16/35例11.5:通過InputStream和OutputStream復(fù)制圖形文件importjava.io.*;publicclasseg115{ publicstaticvoidmain(String[]args)throwsIOException{ Filefile=newFile("jpg/j1.jpg"); Fileoutfile=newFile("jpg/j4.jpg"); FileInputStreamfis=newFileInputStream(file);//文件輸入流 FileOutputStreamfos=newFileOutputStream(outfile);//定義文件輸出流 InputStreamis=newBufferedInputStream(fis);//字節(jié)輸入流 OutputStreamos=newBufferedOutputStream(fos);//字節(jié)輸出流 inti=0; while(i!=-1){ i=is.read(); os.write(i); } is.close(); os.close(); }}2024/2/4
17/35過濾器數(shù)據(jù)流
節(jié)點(diǎn)流(nodestream):建立了程序和其他數(shù)據(jù)源或數(shù)據(jù)目標(biāo)的數(shù)據(jù)通道,程序通過這類流可以和流的另一端的數(shù)據(jù)源或目標(biāo)進(jìn)行數(shù)據(jù)交互,這類數(shù)據(jù)流稱為節(jié)點(diǎn)流(nodestream)。例如文件輸入流過濾器數(shù)據(jù)流(filterStream)本身并不和具體的數(shù)據(jù)源和數(shù)據(jù)目標(biāo)連接,它們連接在其他輸入輸出流上,提供各種數(shù)據(jù)處理,諸如轉(zhuǎn)換、緩存、加密、壓縮等功能,這類流稱為過濾器數(shù)據(jù)流(filterStream)。2024/2/4
18/35FilterInputStreamFilterInputStream(InputStreamin)FilterOutputStreamFilterOutputStream(OutputStreamout)DataInputStreamFilterInputStream的子類DataOutputStreamFilterOutputStream的子類2024/2/4
19/35DataInputStream類常用方法方法功能readByte()讀取一個(gè)有符號(hào)的字節(jié)。readChar()讀取一個(gè)字符。readDouble()讀取8個(gè)字節(jié),返回double值。readFloat()讀取4個(gè)字節(jié),返回float值。readFully(byte[]b)讀取b.length個(gè)字節(jié),并存到數(shù)組b中。readInt()讀取4個(gè)字節(jié),并返回整形值。readLong()讀取8個(gè)字節(jié),并返回長(zhǎng)整型值。readShort()讀取2個(gè)字節(jié),并返回短整型值。readUnsignedByte()讀取1個(gè)字節(jié),并返回?zé)o符號(hào)值。readBoolean()讀1個(gè)字節(jié),非0返回True,0返回False。readUnsignedShort()讀2個(gè)字節(jié),返回一個(gè)無符號(hào)的short值。readUTF()讀取1個(gè)UTF-8編碼的字符串。read(byte[]b)讀取一定數(shù)量的字節(jié),并將它們存儲(chǔ)到緩沖區(qū)數(shù)組b中。read(byte[]b,intoff,intlen)從包含的輸入流中將最多l(xiāng)en個(gè)字節(jié)讀入1個(gè)byte數(shù)組中。readFully(byte[]b,intoff,intlen)讀取b.len個(gè)字節(jié),并存到數(shù)組b中,第1個(gè)字節(jié)存在b[off]。2024/2/4
20/35DataOutputStream類常用方法方法功能size()返回到目前為止寫入此數(shù)據(jù)輸出流的字節(jié)數(shù)。flush()清空數(shù)據(jù)輸出流。write(intb)將參數(shù)b的八個(gè)低位寫入基礎(chǔ)輸出流。writeBoolean(booleanv)將boolean值以1字節(jié)值形式寫入基礎(chǔ)輸出流。writeByte(intv)將v以1字節(jié)值形式寫出到基礎(chǔ)輸出流中。writeBytes(Strings)將字符串按字節(jié)順序?qū)懗龅交A(chǔ)輸出流中。writeChar(intv)將v以2字節(jié)值形式寫入基礎(chǔ)輸出流中。writeChars(Strings)將字符串s按字符順序?qū)懭牖A(chǔ)輸出流。writeInt(intv)將v以4字節(jié)值形式寫入基礎(chǔ)輸出流中。writeLong(longv)將v以8字節(jié)值形式寫入基礎(chǔ)輸出流中。writeShort(intv)將v以2字節(jié)值形式寫入基礎(chǔ)輸出流中。writeUTF(Stringstr)用UTF-8修改版編碼將一個(gè)字符串寫入輸出流。write(byte[]b,intoff,intlen)將byte數(shù)組中從偏移量off開始的len個(gè)字節(jié)寫入基礎(chǔ)輸出流。writeDouble(doublev)使用Double類中的doubleToLongBits方法將double參數(shù)轉(zhuǎn)換為一個(gè)long值,然后將該long值以8字節(jié)形式寫入基礎(chǔ)輸出流中。writeFloat(floatv)使用Float類中的floatToIntBits方法將float參數(shù)轉(zhuǎn)換為一個(gè)int值,然后將該int值以4字節(jié)值形式寫入基礎(chǔ)輸出流中。2024/2/4
21/35例11.6保存和讀取學(xué)生檔案importjava.io.*;publicclasseg11_6{ publicstaticvoidmain(String[]args)throwsIOException{ Stringfilename="srudent.dat"; String[]students={"張三","李四"}; int[]ages={10,9}; DataOutputStreamdout=newDataOutputStream(newFileOutputStream(filename));
2024/2/4
22/35for(inti=0;i<2;i++){//用TAB符來分隔字段 dout.writeChars(students[i]); dout.writeChar('\t'); dout.writeInt(ages[i]); dout.writeChar('\t'); } dout.close(); DataInputStreamdin=newDataInputStream(newFileInputStream(filename));
2024/2/4
23/35 for(inti=0;i<2;i++){ StringBuffername=newStringBuffer(); charchread;//遇到TAB結(jié)束String字段讀取 while((chread=din.readChar())!='\t'){ name.append(chread); } intage=din.readInt(); din.readChar();//丟棄分隔符 System.out.println("學(xué)生"+name+"的年齡:"+age+"."); } din.close(); }}2024/2/4
24/3511.4文件
創(chuàng)建文件類對(duì)象File類用于描述本地文件系統(tǒng)中的文件或目錄。通過建立File類的實(shí)例對(duì)象,我們可以方便的建立與磁盤文件或目錄的連接,進(jìn)而通過File對(duì)象獲取與之連接的磁盤文件或目錄的有關(guān)屬性并對(duì)其進(jìn)行一定的管理操作。
File類的構(gòu)造方法2024/2/4
25/35方法功能File(Stringpathname)根據(jù)參數(shù)pathname創(chuàng)建一個(gè)新File實(shí)例。File(Stringparent,Stringchild)根據(jù)parent路徑和child文件名創(chuàng)建一個(gè)新File實(shí)例。File(URIuri)根據(jù)URL對(duì)象創(chuàng)建File實(shí)例。路徑的表示方法通常有兩種:絕對(duì)路徑相對(duì)路徑。例:d:\myworkspace\testproject\test\myfile.dat文件的路徑寫法“d:\\myworkspace\\testproject\\test\\myfile.dat”2024/2/4
26/35創(chuàng)建文件對(duì)象1.路徑和文件寫在一起。Filemyfile=newFile(“d:\\myworkspace\\testproject”,“\\test\\myfile.dat”);2.路徑和文件分開。Filemyfile=newFile(“d:\\myworkspace\\testproject\\test”,“myfile.dat”);2024/2/4
27/35使用文件對(duì)象獲取文件和目錄屬性的方法2024/2/4
28/35方法功能exists()判斷文件對(duì)象表示的文件或目錄是否存在。isFile()判斷文件對(duì)象是否是一個(gè)標(biāo)準(zhǔn)文件。isDirectory()判斷文件對(duì)象是否是一個(gè)目錄。isHidden()判斷文件對(duì)象是否是一個(gè)隱藏文件。isAbsolute()判斷文件對(duì)象是否為絕對(duì)路徑名。canExecute()判斷文件對(duì)象是否可執(zhí)行。canRead()判斷文件對(duì)象表示的文件是否可讀。canWrite()判斷文件對(duì)象表示的文件可以修改。getName()獲取文件對(duì)象表示的文件或目錄的名稱。lastModified()獲取文件對(duì)象表示的文件的最后一次被修改的時(shí)間。length()獲取文件對(duì)象表示的文件的長(zhǎng)度。getParent()獲取文件對(duì)象表示的目錄的父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回null。getParentFile()獲取文件對(duì)象表示的路徑的父目錄的抽象路徑
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目管理者的關(guān)鍵技能分析試題及答案
- 財(cái)務(wù)管理中的行為金融學(xué)應(yīng)用試題及答案
- 財(cái)務(wù)分析與監(jiān)控試題及答案2025
- 項(xiàng)目角色與影響力評(píng)估試題及答案
- 2025年稅收政策變化試題及答案
- 社團(tuán)立項(xiàng)課題申報(bào)書
- 項(xiàng)目管理考試中常見誤區(qū)及試題答案
- 微生物檢測(cè)進(jìn)展動(dòng)態(tài)試題及答案
- 解讀注冊(cè)會(huì)計(jì)師考試各科目的意義試題及答案
- 2025年注冊(cè)會(huì)計(jì)師考試必學(xué)技巧試題及答案
- 2025榆林能源集團(tuán)有限公司招聘工作人員(473人)筆試參考題庫(kù)附帶答案詳解
- 銀行等安全保衛(wèi)現(xiàn)場(chǎng)檢查要點(diǎn)清單
- 活動(dòng)場(chǎng)地租賃與活動(dòng)安全責(zé)任協(xié)議
- 《數(shù)據(jù)統(tǒng)計(jì)與分析》課件
- 2024年河南職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)必考題
- (二模)新疆維吾爾自治區(qū)2025年普通高考第二次適應(yīng)性檢測(cè) 英語試卷(含答案詳解)
- 征信系統(tǒng)AI應(yīng)用行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 書法藝術(shù)療愈在書法教育中的實(shí)踐與應(yīng)用研究
- 射頻電路封裝設(shè)計(jì)與工藝實(shí)現(xiàn)方法研究
- 2025年中國(guó)航天日知識(shí)競(jìng)賽考試題庫(kù)300題(含答案)
- T-JSQX 0016-2024 無人駕駛配送裝備通.用技術(shù)要求
評(píng)論
0/150
提交評(píng)論