版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目八Java中IO的使用
I/O是Input/Output的縮寫,即輸入/輸出項(xiàng)目描述
任務(wù)一File類【任務(wù)描述】
任務(wù)8_1:創(chuàng)建路徑的File對象和文件的File對象,并調(diào)用File的方法,對文件所在的目錄名、絕對路徑等進(jìn)行判斷,新建一個(gè)空目錄再將它刪除。【必備知識(shí)】
1.什么是輸入/輸出
計(jì)算機(jī)是由控制器、運(yùn)算器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備這五大部件所構(gòu)成的,輸入設(shè)備有鍵盤、鼠標(biāo)、掃描儀、CD/DVD-ROM、麥克鋒等,輸出設(shè)備有顯示器、打印機(jī)、刻錄機(jī)、音箱等。在前面的項(xiàng)目中我們用System.out.print系列語句來向計(jì)算機(jī)屏幕輸出程序運(yùn)行結(jié)果,也用了Scanner的實(shí)例來讀取用戶從鍵盤輸出的數(shù)據(jù),這樣就完成了與用戶的簡單交互。但有時(shí)候,我們希望將程序運(yùn)行的結(jié)果永久性地保存下來,或是想讀取大量的數(shù)據(jù),這時(shí)候顯示器和鍵盤的功能就有局限性了,與外部存儲(chǔ)器進(jìn)行信息交換,將數(shù)據(jù)寫入文件,或是從文件中讀取數(shù)據(jù),不失為一種更好的選擇。
Java執(zhí)行文件讀寫操作都是通過對象實(shí)現(xiàn)的,讀取數(shù)據(jù)的對象稱為輸入流(inputstream),寫入數(shù)據(jù)的對象稱為輸出流(outputstream)。Java的輸入輸出流又包括字符流和字節(jié)流,它們充分利用了OOP的繼承特性,公用操作在超類中定義,子類提供特殊的操作,讀寫操作的對象是文件(File)。2.File類創(chuàng)建輸入輸出流都要使用到File對象,F(xiàn)ile對象即可以表示文件,也可以表示目錄。文件名的全名是由目錄路徑與文件名組成的,如C:\java\Example.java是一個(gè)文件名的全名,C:\java\是目錄路徑,Example.java是文件名。文件目錄路徑既可以是相對路徑,也可以是絕對路徑。絕對路徑是從根目錄開始的路徑,如:C:/java/src,或?qū)懽鰿:\\java\\src,由于反斜杠已用作轉(zhuǎn)義序列,目錄分隔符可以使用兩個(gè)反斜杠或一個(gè)斜杠。與DOS相同,用.表示當(dāng)前目錄,用..表示上一級目錄。
File類在io包中,因此,在.java源文件的頂部,要用importjava.io.File或import.java.*來導(dǎo)入包的內(nèi)容,否則程序運(yùn)行會(huì)出錯(cuò)。
File類常用的構(gòu)造方法有:[格式8_1File類常用的構(gòu)造方法]File(Stringpathname)//目錄名或是文件名File(Stringparent,Stringchild)//child是parenet的子目錄File(Filef,Stringchild)//f是根據(jù)目錄創(chuàng)建的對象,child在目錄中如:
Filef=newFile("C:\\java\\Example.java");Filef=newFile("C:/java/","Example.java");Filef=newFile("Example.java");File類中常用的方法有:[格式8_2File類常用的方法]StringgetName()//獲取文件名或目錄名,但不包括路徑StringgetPath()//獲取路徑名,如果是文件包括文件名StringgetAbsolutePath()//獲取絕對路徑名,如果是文件包括文件名StringgetParent()//獲取上一級路徑名longlastModified()//獲取文件上次修改的時(shí)間booleanexists()//判斷文件或目錄是否存在booleanisFile()//判斷是否為文件booleanisDirectory()//判斷是否為目錄booleandelete()//刪除文件或空目錄booleanmkdir()//如果目錄不存在則創(chuàng)建目錄說明:(1)lastModified()獲取文件上次修改的時(shí)間,具體是距1970年1月1日的微秒數(shù);(2)delete()用于刪除文件或空目錄,如果刪除成功則返回true;(3)mkdir()用于創(chuàng)建目錄,如果創(chuàng)建成功則返回true。【解題思路】
任務(wù)8_1:
1.創(chuàng)建當(dāng)前路徑的File對象;
2.判斷當(dāng)前對象是否為目錄,是否為文件,絕對路徑為何;
3.判斷某個(gè)目錄是否存在,如果不存在則新建一個(gè),如果存在則刪除它。【任務(wù)透析】//Three_Example8_1.javaimportjava.io.File;public
classExample8_1{
public
static
voidmain(String[]args){Filef=newFile("./aaa/bbb.txt");//在執(zhí)行程序前先建立此文件
System.out.println("f.getName()="+f.getName());System.out.println("f.getPath()="+f.getPath());System.out.println("f.getAbsolutePath()="+f.getAbsolutePath());System.out.println("f.getParent()="+f.getParent());System.out.println("f.lastModified()="+f.lastModified());System.out.println("f.exists()="+f.exists());System.out.println("f.isFile()="+f.isFile());System.out.println("f.isDirectory()="+f.isDirectory());System.out.println("f.delete()="+f.delete());//刪除文件后返回trueSystem.out.println();System.out.println("f.getName()="+f.getName());System.out.println("f.getPath()="+f.getPath());System.out.println("f.getAbsolutePath()="+f.getAbsolutePath());System.out.println("f.getParent()="+f.getParent());System.out.println("f.lastModified()="+f.lastModified());System.out.println("f.exists()="+f.exists());System.out.println("f.isFile()="+f.isFile());System.out.println("f.isDirectory()="+f.isDirectory());System.out.println("f.delete()="+f.delete());//文件不存在返回false}}圖8.1Example8_1.java的運(yùn)行結(jié)果【課堂提問】
★什么輸入/輸出,計(jì)算機(jī)有哪里輸入/輸出的設(shè)備?
★什么是相對路徑?什么是絕對路徑?路徑當(dāng)中的分隔符是用斜杠還是反斜杠?
★File類中常用的構(gòu)造方法與方法都有哪些?
【現(xiàn)場演練】
判斷C:\windows目錄是否存在,是的話使用刪除命令看能否刪除成功?為什么。不是的話則創(chuàng)建這個(gè)目錄。再同樣地操作一個(gè)C:\winnt目錄任務(wù)二I/O流的分類
【任務(wù)描述】任務(wù)8_2:理解字符流與字節(jié)流的特點(diǎn),以及它們常用的類與方法。了解節(jié)點(diǎn)流和過濾流?!颈貍渲R(shí)】1.字符流Java定義了兩種類型的輸入輸出流:字節(jié)流和字符流。字節(jié)流用于處理字節(jié)的輸入和輸出,例如Java的.class文件是字節(jié)文件,讀寫這樣的文件就要用字節(jié)流。字符流用于處理字符的輸入和輸出,Java的源程序.java文件使用的是Unicode編碼的字符,讀寫這樣的文件就要使用字符流。由于一個(gè)字節(jié)是8比特,一個(gè)字符是16比特,所以很多時(shí)候,用字符流處理的速度要高于字節(jié)流。Java的I/O系統(tǒng)由很多類組成,它們充分利用了OOP的繼承特性。輸入輸出的公用操作由超類定義,子類提供特殊的操作。由于有兩種不同類型的流,I/O系統(tǒng)包括兩個(gè)獨(dú)立的類層次結(jié)構(gòu),一個(gè)是字節(jié)的,一個(gè)是字符的,字節(jié)流和字符流的大多數(shù)功能是對應(yīng)的。字符流的頂端是兩個(gè)抽象類Reader和Writer,其中Reader用于輸入,Writer用于輸出,兩者派生的具體類用于處理Unicode字符的輸入和輸出,圖8.2列出了常用字符流類的層次結(jié)構(gòu)。抽象類Reader提供了讀取字符文件的公用方法,常用的如下:[格式8_3Reader類的常用方法]intread()throwsIOException//從輸入流中讀下一個(gè)字符,到達(dá)流尾返回-1voidclose()throwsIOException//關(guān)閉輸入流,釋放它占用的系統(tǒng)資源說明:(1)無論是字符流還是字節(jié)流方法的定義,都必須聲明拋出IOException異常;(2)調(diào)用這些方法時(shí)都必須處理異常,否則無法通過編譯。[格式8_4Writer類的常用方法]voidwrite(intc)throwsIOException//把指定字符的Unicode碼寫到輸出流voidwrite(Stringstr)throwsIOException//把字符串寫入到輸出流voidclose()throwsIOException//關(guān)閉輸出流,釋放它所占用的系統(tǒng)資源圖8.2常用字符流類關(guān)系樹2.字節(jié)流字節(jié)流層次結(jié)構(gòu)的頂端是抽象類InputStream和OutputStream,兩者分別定義了操作字節(jié)輸入和字節(jié)輸出的公共方法被各自的子類繼承,圖8.3列出了常用字節(jié)流類的層次結(jié)構(gòu)。圖8.3常用字節(jié)流類關(guān)系樹InputStream類的常用方法如下:[格式8_5InputStream類的常用方法]intread()throwsIOException//從輸入流中讀下一個(gè)字節(jié),到達(dá)流尾返回-1voidclose()throwsIOException//關(guān)閉字節(jié)輸入流,釋放它占用的系統(tǒng)資源說明:(1)無論是字符流還是字節(jié)流方法的定義,都必須聲明拋出IOException異常;(2)調(diào)用這些方法時(shí)都必須處理異常,否則無法通過編譯。OutputStream類的常用方法如下:[格式8_6OutputStream類的常用方法]voidread(intb)//從指定的字節(jié)寫入輸出流voidclose()throwsIOException//關(guān)閉字節(jié)輸出流,釋放它占用的系統(tǒng)資源3.節(jié)點(diǎn)流和過濾流節(jié)點(diǎn)流是用于直接操作目標(biāo)設(shè)備所對應(yīng)的流類。節(jié)點(diǎn)流類所對應(yīng)的I/O源或目標(biāo)稱為流節(jié)點(diǎn)。比如我們用一個(gè)類和一個(gè)文件或網(wǎng)絡(luò)相關(guān)聯(lián),那么這個(gè)類就叫做節(jié)點(diǎn)流類,這個(gè)文件或網(wǎng)絡(luò)就叫做流的節(jié)點(diǎn)。換句話說,節(jié)點(diǎn)流是從特定的地方讀寫的流類,例如:磁盤或一塊內(nèi)存區(qū)域。節(jié)點(diǎn)流可以從或向一個(gè)特定的地方(節(jié)點(diǎn))讀寫數(shù)據(jù),如FileReader。過濾流又稱處理流,使用節(jié)點(diǎn)流作為輸入或輸出。過濾流是使用一個(gè)已經(jīng)存在的輸入流或輸出流連接創(chuàng)建的。過濾流是對一個(gè)已存在的流的連接和封裝,通過所封裝的流的功能調(diào)用實(shí)現(xiàn)數(shù)據(jù)讀寫,如BufferedReader。處理流的構(gòu)造方法總是要帶一個(gè)其他的流對象做參數(shù)。一個(gè)流對象經(jīng)過其他流的多次包裝,稱為流的鏈接?!菊n堂提問】★什么字節(jié)流,什么是字符流,字節(jié)流與字符流有何不同?★什么樣的文件適合用字節(jié)流讀寫?什么樣的文件適合用字符流讀寫?★為什么調(diào)用字節(jié)流或字符流方法時(shí)都要處理異常?什么異常?★什么是節(jié)點(diǎn)流和過濾流?任務(wù)三常用I/O流的應(yīng)用
【任務(wù)描述】任務(wù)8_3:將一個(gè)Unicode編碼的文本文件讀取出來,打印行號(hào)并統(tǒng)計(jì)行數(shù)、字節(jié)數(shù)。任務(wù)8_4:編寫一個(gè)程序,創(chuàng)建一個(gè)數(shù)據(jù)文件a.txt,并通過FileWrite對象向其中輸出整數(shù)1至100?!窘忸}思路】
任務(wù)8_3:1.定義一個(gè)名為Example8_3的類;2.將文件的讀取過程拋出異常;3.創(chuàng)建一個(gè)名為text.txt的文件,里面寫入幾行數(shù)據(jù);4.創(chuàng)建一個(gè)名為f的讀取文件的實(shí)例;5.創(chuàng)建行數(shù)與字節(jié)數(shù)的變量,并賦初始值;6.一個(gè)字符一個(gè)字符地讀入text.txt文件里的數(shù)據(jù),同時(shí)輸出到屏幕;7.當(dāng)讀入的字符為Unicode碼的換行時(shí),輸出另起一行。任務(wù)8_4:1.定義一個(gè)名為Example8_4的類;2.將文件的寫入過程拋出異常;3.創(chuàng)建一個(gè)名為a.txt的文件;4.創(chuàng)建一個(gè)名為w的寫入文件的實(shí)例;5.定義整型變量i,由1循環(huán)至100;6.將i寫入到a.txt,并添加分隔符號(hào);7.寫入完畢,關(guān)閉a.txt文件?!救蝿?wù)透析】//Example8_3.javaimportjava.io.*;public
classExample8_3{
public
static
voidmain(String[]args){
inti,j=1,k=0;
try{ FileReaderf=newFileReader("D:/java/src/text.txt");System.out.print("第"+j+"行:");
while(true){ i=f.read();
if(i==-1)
break; k++; System.out.print((char)i);
if(i==10) { j++; System.out.print("第"+j+"行:"); }}}
catch(FileNotFoundExceptione1){System.out.println("指定文件不存在");}
catch(IOExceptione2){System.out.println("輸出異常");}System.ou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時(shí)用工人員工作態(tài)度
- 高端餐飲金箔施工合同
- 旅游景點(diǎn)樁基施工協(xié)議
- 住宅小區(qū)鋼筋工施工協(xié)議
- 水產(chǎn)養(yǎng)殖學(xué)專業(yè)畢業(yè)生就業(yè)協(xié)議
- 建筑電氣安裝架子工協(xié)議
- 購房合同范例是正式合同
- 挖蟲草顧工合同書
- 工商銀行2012年住房貸款合同內(nèi)容
- 房子搬遷合同范例
- 2023年小學(xué)五年級綜合實(shí)踐活動(dòng)上冊期末試卷(5篇)
- 成立項(xiàng)目部紅頭文件完整資料
- LY/T 1923-2020室內(nèi)木質(zhì)門
- GB/T 30444-2013保健服務(wù)業(yè)分類
- GB/T 19418-2003鋼的弧焊接頭缺陷質(zhì)量分級指南
- GB/T 15900-1995化學(xué)試劑偏重亞硫酸鈉(焦亞硫酸鈉)
- GB/T 15686-2008高粱單寧含量的測定
- GB/T 12615.3-2004封閉型平圓頭抽芯鉚釘06級
- 《血糖儀POCT臨床操作規(guī)范》考試題及答案
- GA/T 1105-2013信息安全技術(shù)終端接入控制產(chǎn)品安全技術(shù)要求
- 成年依戀量表
評論
0/150
提交評論