JAVA語(yǔ)言程序設(shè)計(jì)課件 第8章輸入輸出與文件處理_第1頁(yè)
JAVA語(yǔ)言程序設(shè)計(jì)課件 第8章輸入輸出與文件處理_第2頁(yè)
JAVA語(yǔ)言程序設(shè)計(jì)課件 第8章輸入輸出與文件處理_第3頁(yè)
JAVA語(yǔ)言程序設(shè)計(jì)課件 第8章輸入輸出與文件處理_第4頁(yè)
JAVA語(yǔ)言程序設(shè)計(jì)課件 第8章輸入輸出與文件處理_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第8章輸入輸出與文件處理學(xué)習(xí)目標(biāo)掌握流的概念,掌握字節(jié)型輸入/輸出流和緩沖區(qū)輸入/輸出流的基本使用方法掌握文件類的概念和使用方法掌握文件讀寫中使用到的FileInputStream類、FileOutputStream類和RandomAccessFile類的使用方法8.1.1任務(wù)8.1使用輸入/輸出流8.1輸入/輸出流一、任務(wù)引入流是Java中處理輸入/輸出的形式。字節(jié)型輸入/輸出流由InputStream和OutputStream派生而來,字符型輸入/輸出由Reader和Writer派生而來,下面的例子演示了如何使用字節(jié)型輸入/輸出流,字符型輸入/輸出流的使用方法與字節(jié)型類似。二、任務(wù)目標(biāo)掌握J(rèn)ava中字節(jié)型輸入/輸出流的使用方法。三、任務(wù)內(nèi)容編寫程序,由字符串生成字節(jié)型輸入/輸出流,并使用適當(dāng)方法將流內(nèi)容顯示在屏幕上。四、程序清單/*源程序文件名:Ex0801.java*/importjava.io.*;public

classEx0801{

public

static

voidmain(Stringargs[])throwsIOException{ Strings="ThisisatestofI/Ostream";

bytebuffer[]=s.getBytes(); ByteArrayOutputStreambaOut=newByteArrayOutputStream();

for(inti=0;i<buffer.length;i++) baOut.write(buffer[i]); ByteArrayInputStreambaIn=newByteArrayInputStream

(baOut.toByteArray());

booleaneof=false;

while(!eof){

intc=baIn.read();

if(c==-1) eof=true;

else System.out.print((char)c); } System.out.println("\n'writeTo方法可以達(dá)到同樣的結(jié)果:"); baOut.writeTo(System.out); baOut.close(); System.out.println("\n緩沖輸入流的長(zhǎng)度(未重置指針):"+baIn.available()); baIn.reset(); System.out.println("緩沖輸入流的長(zhǎng)度(重置指針后):"+baIn.available()); }}五、運(yùn)行結(jié)果六、任務(wù)小結(jié)在這個(gè)例子中,我們將一個(gè)String對(duì)象轉(zhuǎn)換成字節(jié)數(shù)組后,構(gòu)造了一個(gè)字節(jié)數(shù)組輸出流ByteArrayOutputStream,這是Java輸出流的一種。同時(shí)構(gòu)造了一個(gè)字節(jié)數(shù)組輸入流ByteArrayInputStream。然后使用不同的方法將輸入流和輸出流里的內(nèi)容顯示在屏幕上。最后還使用輸入流的available方法和reset方法查看了不同情況下流內(nèi)的可用字節(jié)數(shù)。8.1.2流所有的編程語(yǔ)言都支持讀入輸入和顯示輸出,Java語(yǔ)言以流的形式處理所有的輸入和輸出。流是由源到目的地通過通信路徑傳遞的一串字節(jié)或字符,流中的數(shù)據(jù)只能向一個(gè)方向流動(dòng),所以我們使用區(qū)分輸入數(shù)據(jù)和輸出數(shù)據(jù)的流。流在被接收時(shí)稱為輸入(讀),在被發(fā)送時(shí)稱為輸出(寫)。使用輸入流可從文件或鍵盤讀入數(shù)據(jù),而使用輸出流可將數(shù)據(jù)寫入到文件或其他輸出設(shè)備,如顯示在屏幕上。Java中的流按處理的數(shù)據(jù)類型又可分為字節(jié)流和字符流,分別用于處理字節(jié)型數(shù)據(jù)和字符型數(shù)據(jù)。字節(jié)輸入流的基類是InputStream,字節(jié)輸出流的基類是OutputStream,字符輸入流的基類是Reader,字符輸出流的基類是Writer。這四個(gè)類都是抽象類,是所有其他流的父類。8.1.3字節(jié)型輸入/輸出流一、InputStream類方法說明publicabstractintread()從輸入流中讀取一字節(jié)數(shù)據(jù),當(dāng)遇到文件尾時(shí)返回-1publicintread(byteb[])從輸入流中讀取一組字節(jié)數(shù)據(jù),并將其存放在數(shù)組b中,當(dāng)遇到文件尾時(shí)返回-1方法說明publicintread(byteb[],intoffset,intlength)從輸入流中讀取長(zhǎng)度為length的一組數(shù)據(jù),并將其存放在數(shù)組b中以offset開始的空間內(nèi)publicvoidclose()關(guān)閉輸入流并釋放資源publiclongskip(longn)從輸入流中跳過n個(gè)字節(jié)表8-1InputStream類中的常用方法續(xù)表二、OutputStream類方法說明publicabstractvoidwrite(intb)向輸出流中寫入一字節(jié)數(shù)據(jù)publicvoidwrite(byteb[])向輸出流中寫入數(shù)組b中的一組數(shù)據(jù)publicvoidwrite(byteb[],intoffset,intlength)向輸出流中寫入數(shù)組b中從offset位置開始,長(zhǎng)度為length的一組數(shù)據(jù)publicvoidflush()清除緩沖區(qū),將緩沖區(qū)內(nèi)尚未輸出的數(shù)據(jù)全部輸出publicvoidclose()關(guān)閉輸出流并釋放資源表8-2OutputStream類中的常用方法8.1.4緩沖區(qū)輸入/輸出流一、ByteArrayInputStream類方法說明publicByteArrayInputStream(bytebuf[])由字節(jié)數(shù)組創(chuàng)建相應(yīng)的輸入流publicByteArrayInputStream(bytebuf[],intoffset,intlength)由字節(jié)數(shù)組中起點(diǎn)為offset,長(zhǎng)度為length的數(shù)據(jù)創(chuàng)建輸入流publicsynchronizedintread()讀取一個(gè)字節(jié)publicsynchronizedintread(byteb[],intoffset,intlength)讀取length個(gè)字節(jié),存放到數(shù)組b中以offset開始的位置publicsynchronizedlongskip(longn)跳過n個(gè)字節(jié)publicsynchronizedintavailable()返回緩沖區(qū)內(nèi)的可用字節(jié)數(shù)publicsynchronizedvoidreset()重置指針到流的開始位置二、ByteArrayOutputStream類方法說明publicByteArrayOutputStream()創(chuàng)建一個(gè)字節(jié)數(shù)組輸出流publicByteArrayOutputStream(intsize)創(chuàng)建一個(gè)緩沖區(qū)長(zhǎng)度為size的字節(jié)數(shù)組輸出流publicsynchronizedvoidwrite(intb)寫入一個(gè)字節(jié)publicsynchronizedvoidwrite(byteb[],intoffset,intlength)把數(shù)組b中由offset開始,長(zhǎng)度為length的數(shù)據(jù)寫入緩沖區(qū)publicsynchronizedvoidwriteTo(OutputStreamout)把緩沖區(qū)內(nèi)容寫入到另一輸出流outpublicsynchronizedvoidreset()重置指針到流的開始位置publicsynchronizedbyte[]toByteArray()將緩沖區(qū)內(nèi)容作為一個(gè)字節(jié)數(shù)組返回publicintsize()返回當(dāng)前緩沖區(qū)大小publicStringtoString()將緩沖區(qū)內(nèi)容轉(zhuǎn)換為字符串返回表8-4ByteArrayOutputStream類的常用方法三、StringBufferInputStream類它的構(gòu)造函數(shù)以一個(gè)字符串為參數(shù),原型為:publicStringBufferInputStream(Strings)其他常用方法均與ByteArrayInputStream中方法同名且基本功能相似。8.2.1任務(wù)8.2創(chuàng)建文件和文件夾8.2文件類一、任務(wù)引入對(duì)文件的操作首先是建立文件和文件夾,Java中使用File類的相關(guān)方法來完成這一操作。請(qǐng)看下面的例子:二、任務(wù)目標(biāo)掌握J(rèn)ava中File類的使用方法。三、任務(wù)內(nèi)容編寫程序,建立幾個(gè)測(cè)試用的文件和文件夾。四、程序清單五、運(yùn)行結(jié)果六、任務(wù)小結(jié)File類中封裝了有關(guān)文件和文件夾的基本操作。在這個(gè)例子中,我們通過七個(gè)文件類,分別創(chuàng)建了四個(gè)文件夾和三個(gè)文件。8.2.2File類Java中的File類是頂層類Object類的子類,在java.io包中,它提供了類似Windows資源管理器的一些功能,可以對(duì)文件和文件夾進(jìn)行諸如創(chuàng)建和刪除文件及文件夾、瀏覽文件等操作。File類的構(gòu)造函數(shù)如下:File(Stringpathname),通過把給出的路徑名轉(zhuǎn)換為抽象路徑名,創(chuàng)建一個(gè)新的File實(shí)例。File(Stringparent,Stringchild),由父路徑名和子路徑名,創(chuàng)建一個(gè)新的File實(shí)例。File(Fileparent,Stringchild),由父File對(duì)象和子路徑名,創(chuàng)建一個(gè)新的File實(shí)例。8.3.1任務(wù)8.3文件輸入輸出操作8.3文件讀寫一、任務(wù)引入在創(chuàng)建了文件夾和文件后,可以使用FileInputStream類、FileOutputStream類及RandomAccessFile類訪問文件,讀出或?qū)懭霐?shù)據(jù)。請(qǐng)看下面的例子:二、任務(wù)目標(biāo)掌握J(rèn)ava中文件輸入/輸出的基本操作方法。三、任務(wù)內(nèi)容編寫程序,從一個(gè)文件中讀出數(shù)據(jù),把數(shù)據(jù)顯示到屏幕,并寫入到另一個(gè)文件。四、程序清單/*源程序文件名:Ex0803.java*/importjava.io.*;public

classEx0803{

public

static

voidmain(Stringargs[]){

try{ FileInputStreaminObj=newFileInputStream("c:\\FileTest\\Text1.dat"); FileOutputStreamoutObj=newFileOutputStream("c:\\FileTest\\Text2.dat");

bytebyArray[]=new

byte[2];

while(inObj.read(byArray)!=-1){ StringstrObj=newString(byArray); System.out.print(strObj); outObj.write(byArray); } inObj.close(); outObj.close(); }catch(FileNotFoundExceptione){ System.out.println("未找到指定文件!"); e.printStackTrace(); }catch(IOExceptione){ System.out.println("文件讀寫錯(cuò)誤!"); e.printStackTrace();

} }}五、運(yùn)行結(jié)果六、任務(wù)小結(jié)在運(yùn)行程序之前,我們首先用記事本打開在任務(wù)8.2中創(chuàng)建的Text1.dat文件,在其中輸入如圖8-3的文字。運(yùn)行程序之后我們就可以看到Text1.dat文件中的內(nèi)容將顯示在屏幕上,同時(shí)Text2.dat文件中也將存儲(chǔ)有同樣的文字。8.3.2FileInputStream方法說明intread()從文件讀入一個(gè)字節(jié)的數(shù)據(jù)方法說明intread(byte[]b))從文件讀入一組數(shù)據(jù)并存放在字節(jié)數(shù)組b中intread(byte[]b,intoffset,intlength)從文件讀入一組長(zhǎng)度為length的數(shù)據(jù)并存放在字節(jié)數(shù)組中offset開始的位置intclose()關(guān)閉輸入流,并釋放與其關(guān)聯(lián)的文件表8-5FileInputStream類中的常用方法續(xù)表8.3.3FileOutputStream方法說明intwrite()向文件中寫入一個(gè)字節(jié)的數(shù)據(jù)intwrite(byte[]b)向文件中寫入數(shù)組b中的數(shù)據(jù)intwrite(byte[]b,intoffset,intlength)向文件中寫入數(shù)組b中從offset位置開始,長(zhǎng)度為length的一組數(shù)據(jù)intclose()關(guān)閉輸出流,并釋放與其關(guān)聯(lián)的文件表8-6FileOutputStream類中的常用方法8.3.4RandomAccessFile隨機(jī)訪問(RandomAccess)是指:數(shù)據(jù)可讀或?qū)懙轿募械碾S機(jī)單元。在FileInputStream和FileOutputStream中,數(shù)據(jù)將作為連續(xù)信息流分別進(jìn)行讀寫。Java提供的RandomAccessF

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論