版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目八Java中IO的使用
I/O是Input/Output的縮寫,即輸入/輸出項目描述
任務一File類【任務描述】
任務8_1:創(chuàng)建路徑的File對象和文件的File對象,并調(diào)用File的方法,對文件所在的目錄名、絕對路徑等進行判斷,新建一個空目錄再將它刪除。【必備知識】
1.什么是輸入/輸出
計算機是由控制器、運算器、存儲器、輸入設備、輸出設備這五大部件所構(gòu)成的,輸入設備有鍵盤、鼠標、掃描儀、CD/DVD-ROM、麥克鋒等,輸出設備有顯示器、打印機、刻錄機、音箱等。在前面的項目中我們用System.out.print系列語句來向計算機屏幕輸出程序運行結(jié)果,也用了Scanner的實例來讀取用戶從鍵盤輸出的數(shù)據(jù),這樣就完成了與用戶的簡單交互。但有時候,我們希望將程序運行的結(jié)果永久性地保存下來,或是想讀取大量的數(shù)據(jù),這時候顯示器和鍵盤的功能就有局限性了,與外部存儲器進行信息交換,將數(shù)據(jù)寫入文件,或是從文件中讀取數(shù)據(jù),不失為一種更好的選擇。
Java執(zhí)行文件讀寫操作都是通過對象實現(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是一個文件名的全名,C:\java\是目錄路徑,Example.java是文件名。文件目錄路徑既可以是相對路徑,也可以是絕對路徑。絕對路徑是從根目錄開始的路徑,如:C:/java/src,或?qū)懽鰿:\\java\\src,由于反斜杠已用作轉(zhuǎn)義序列,目錄分隔符可以使用兩個反斜杠或一個斜杠。與DOS相同,用.表示當前目錄,用..表示上一級目錄。
File類在io包中,因此,在.java源文件的頂部,要用importjava.io.File或import.java.*來導入包的內(nèi)容,否則程序運行會出錯。
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()//獲取文件上次修改的時間booleanexists()//判斷文件或目錄是否存在booleanisFile()//判斷是否為文件booleanisDirectory()//判斷是否為目錄booleandelete()//刪除文件或空目錄booleanmkdir()//如果目錄不存在則創(chuàng)建目錄說明:(1)lastModified()獲取文件上次修改的時間,具體是距1970年1月1日的微秒數(shù);(2)delete()用于刪除文件或空目錄,如果刪除成功則返回true;(3)mkdir()用于創(chuàng)建目錄,如果創(chuàng)建成功則返回true?!窘忸}思路】
任務8_1:
1.創(chuàng)建當前路徑的File對象;
2.判斷當前對象是否為目錄,是否為文件,絕對路徑為何;
3.判斷某個目錄是否存在,如果不存在則新建一個,如果存在則刪除它?!救蝿胀肝觥?/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的運行結(jié)果【課堂提問】
★什么輸入/輸出,計算機有哪里輸入/輸出的設備?
★什么是相對路徑?什么是絕對路徑?路徑當中的分隔符是用斜杠還是反斜杠?
★File類中常用的構(gòu)造方法與方法都有哪些?
【現(xiàn)場演練】
判斷C:\windows目錄是否存在,是的話使用刪除命令看能否刪除成功?為什么。不是的話則創(chuàng)建這個目錄。再同樣地操作一個C:\winnt目錄任務二I/O流的分類
【任務描述】任務8_2:理解字符流與字節(jié)流的特點,以及它們常用的類與方法。了解節(jié)點流和過濾流?!颈貍渲R】1.字符流Java定義了兩種類型的輸入輸出流:字節(jié)流和字符流。字節(jié)流用于處理字節(jié)的輸入和輸出,例如Java的.class文件是字節(jié)文件,讀寫這樣的文件就要用字節(jié)流。字符流用于處理字符的輸入和輸出,Java的源程序.java文件使用的是Unicode編碼的字符,讀寫這樣的文件就要使用字符流。由于一個字節(jié)是8比特,一個字符是16比特,所以很多時候,用字符流處理的速度要高于字節(jié)流。Java的I/O系統(tǒng)由很多類組成,它們充分利用了OOP的繼承特性。輸入輸出的公用操作由超類定義,子類提供特殊的操作。由于有兩種不同類型的流,I/O系統(tǒng)包括兩個獨立的類層次結(jié)構(gòu),一個是字節(jié)的,一個是字符的,字節(jié)流和字符流的大多數(shù)功能是對應的。字符流的頂端是兩個抽象類Reader和Writer,其中Reader用于輸入,Writer用于輸出,兩者派生的具體類用于處理Unicode字符的輸入和輸出,圖8.2列出了常用字符流類的層次結(jié)構(gòu)。抽象類Reader提供了讀取字符文件的公用方法,常用的如下:[格式8_3Reader類的常用方法]intread()throwsIOException//從輸入流中讀下一個字符,到達流尾返回-1voidclose()throwsIOException//關(guān)閉輸入流,釋放它占用的系統(tǒng)資源說明:(1)無論是字符流還是字節(jié)流方法的定義,都必須聲明拋出IOException異常;(2)調(diào)用這些方法時都必須處理異常,否則無法通過編譯。[格式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//從輸入流中讀下一個字節(jié),到達流尾返回-1voidclose()throwsIOException//關(guān)閉字節(jié)輸入流,釋放它占用的系統(tǒng)資源說明:(1)無論是字符流還是字節(jié)流方法的定義,都必須聲明拋出IOException異常;(2)調(diào)用這些方法時都必須處理異常,否則無法通過編譯。OutputStream類的常用方法如下:[格式8_6OutputStream類的常用方法]voidread(intb)//從指定的字節(jié)寫入輸出流voidclose()throwsIOException//關(guān)閉字節(jié)輸出流,釋放它占用的系統(tǒng)資源3.節(jié)點流和過濾流節(jié)點流是用于直接操作目標設備所對應的流類。節(jié)點流類所對應的I/O源或目標稱為流節(jié)點。比如我們用一個類和一個文件或網(wǎng)絡相關(guān)聯(lián),那么這個類就叫做節(jié)點流類,這個文件或網(wǎng)絡就叫做流的節(jié)點。換句話說,節(jié)點流是從特定的地方讀寫的流類,例如:磁盤或一塊內(nèi)存區(qū)域。節(jié)點流可以從或向一個特定的地方(節(jié)點)讀寫數(shù)據(jù),如FileReader。過濾流又稱處理流,使用節(jié)點流作為輸入或輸出。過濾流是使用一個已經(jīng)存在的輸入流或輸出流連接創(chuàng)建的。過濾流是對一個已存在的流的連接和封裝,通過所封裝的流的功能調(diào)用實現(xiàn)數(shù)據(jù)讀寫,如BufferedReader。處理流的構(gòu)造方法總是要帶一個其他的流對象做參數(shù)。一個流對象經(jīng)過其他流的多次包裝,稱為流的鏈接。【課堂提問】★什么字節(jié)流,什么是字符流,字節(jié)流與字符流有何不同?★什么樣的文件適合用字節(jié)流讀寫?什么樣的文件適合用字符流讀寫?★為什么調(diào)用字節(jié)流或字符流方法時都要處理異常?什么異常?★什么是節(jié)點流和過濾流?任務三常用I/O流的應用
【任務描述】任務8_3:將一個Unicode編碼的文本文件讀取出來,打印行號并統(tǒng)計行數(shù)、字節(jié)數(shù)。任務8_4:編寫一個程序,創(chuàng)建一個數(shù)據(jù)文件a.txt,并通過FileWrite對象向其中輸出整數(shù)1至100?!窘忸}思路】
任務8_3:1.定義一個名為Example8_3的類;2.將文件的讀取過程拋出異常;3.創(chuàng)建一個名為text.txt的文件,里面寫入幾行數(shù)據(jù);4.創(chuàng)建一個名為f的讀取文件的實例;5.創(chuàng)建行數(shù)與字節(jié)數(shù)的變量,并賦初始值;6.一個字符一個字符地讀入text.txt文件里的數(shù)據(jù),同時輸出到屏幕;7.當讀入的字符為Unicode碼的換行時,輸出另起一行。任務8_4:1.定義一個名為Example8_4的類;2.將文件的寫入過程拋出異常;3.創(chuàng)建一個名為a.txt的文件;4.創(chuàng)建一個名為w的寫入文件的實例;5.定義整型變量i,由1循環(huán)至100;6.將i寫入到a.txt,并添加分隔符號;7.寫入完畢,關(guān)閉a.txt文件?!救蝿胀肝觥?/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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海口市釣魚場租賃合同
- 煙草行業(yè)整合:天價煙管理辦法
- 挖掘機租賃協(xié)議書中租賃費用
- 礦山槽探施工合同
- 玩具產(chǎn)品保修辦法
- 城市公園建設合同協(xié)議書內(nèi)容
- 職場人際沖突調(diào)解援助政策
- 知識分享意見箱管理
- 餐飲業(yè)員工傷害管理
- 電子產(chǎn)品裝卸人員招聘合同
- AQ/T 1119-2023 煤礦井下人員定位系統(tǒng)通 用技術(shù)條件(正式版)
- 幼兒園班級幼兒圖書目錄清單(大中小班)
- 2024-2034年全球及中國年糕行業(yè)市場發(fā)展分析及前景趨勢與投資發(fā)展研究報告
- 烈士陵園的數(shù)字化轉(zhuǎn)型與智能服務
- 生理學重點復習資料全
- 初中生理想信念教育班會(3篇模板)
- (高清版)JGT 225-2020 預應力混凝土用金屬波紋管
- 2024年上海市奉賢區(qū)中考一模英語試題(含答案解析)
- 農(nóng)產(chǎn)品加工與貯藏原理復習資料
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- Unit1WhatsthematterSectionB2a-2e教學設計人教版八年級英語下冊
評論
0/150
提交評論