資源描述:
《Java JDK6學(xué)習(xí)筆記》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第14章輸入/輸出輸入/輸出(Input/Output)泛指對(duì)某個(gè)設(shè)備或環(huán)境進(jìn)行數(shù)據(jù)的輸入或輸出。例如對(duì)硬盤(pán)進(jìn)行輸入/輸出、對(duì)視頻設(shè)備進(jìn)行輸入/輸出、對(duì)網(wǎng)絡(luò)主機(jī)進(jìn)行輸入/輸出等,可以想象,因設(shè)備或環(huán)境的不同,會(huì)有各式各樣的輸入/輸出問(wèn)題與解決方案。輸入/輸出問(wèn)題在程序設(shè)計(jì)中實(shí)際上是一個(gè)很復(fù)雜的問(wèn)題。對(duì)于輸入/輸出問(wèn)題,Java將之抽象化為流(Stream)對(duì)象來(lái)解決。對(duì)不同的輸入/輸出問(wèn)題,會(huì)有相應(yīng)的流對(duì)象提供解決的方案。本章就是要學(xué)習(xí)Java中各式各樣解決輸入/輸出問(wèn)題的對(duì)象。然而輸入/輸出問(wèn)題所涉及的領(lǐng)域相當(dāng)廣,基于學(xué)習(xí)的角度來(lái)看,必須選擇一個(gè)主題來(lái)專門(mén)討論,所以本章主題會(huì)圍繞在文件輸入/
2、輸出。有了本章的基礎(chǔ),在了解其他領(lǐng)域的輸入/輸出問(wèn)題時(shí)就不難入手。14.1 文件在正式了解Java中如何處理文件輸入/輸出之前,要先了解一下在Java中如何表示一個(gè)文件。本小節(jié)也將簡(jiǎn)單地介紹隨機(jī)文件存取,讓您初步了解文件輸入/輸出時(shí)一些必須注意的事項(xiàng)。14.1.1 File類不同的操作系統(tǒng)對(duì)于文件系統(tǒng)路徑的設(shè)置各有差別。例如在Windows中,一個(gè)路徑的表示法可能是:"C:\Workspace\CH14\"而在Linux下的路徑設(shè)置可能會(huì)像是:"/home/justin/workspace/ch14"Windows的路徑指定是使用UNC(UniversalNamingConvention
3、)路徑名,以\開(kāi)始表示硬盤(pán)根目錄。如果沒(méi)有以\開(kāi)始表示相對(duì)于當(dāng)前工作目錄的路徑,C是可選的硬盤(pán)指定,后面跟隨著:字符。而UNIX-Like系統(tǒng)沒(méi)有Windows系統(tǒng)的C、D、E這樣的硬盤(pán)驅(qū)動(dòng)器概念,UNIX-Like系統(tǒng)的路徑指定以/開(kāi)始表示從根目錄開(kāi)始的絕對(duì)路徑,不以/開(kāi)始表示相對(duì)于當(dāng)前工作目錄的路徑。在程序中設(shè)置路徑時(shí)會(huì)有系統(tǒng)相依性的問(wèn)題,java.io.File類提供一個(gè)抽象的、與系統(tǒng)獨(dú)立的路徑表示。給它一個(gè)路徑字符串,它會(huì)將其轉(zhuǎn)換為與系統(tǒng)無(wú)關(guān)的抽象路徑表示,這個(gè)路徑可以指向一個(gè)文件、目錄或是URI(UniformResourceIdentifier)。一個(gè)File的實(shí)例被建立時(shí),它
4、就不能再被改變內(nèi)容。File實(shí)例除了用作一個(gè)文件或目錄的抽象表示之外,它還提供了不少相關(guān)操作方法:可以用它來(lái)對(duì)文件系統(tǒng)作一些查詢與設(shè)置的動(dòng)作。要注意的是,不管是文件還是目錄,在Java中都是以File的實(shí)例來(lái)表示。范例14.1是一個(gè)設(shè)置與操作File實(shí)例的簡(jiǎn)單示范,可以指定查詢某個(gè)目錄下的所有文件與目錄名稱。ü范例14.1?FileDemo.javapackageonlyfun.caterpillar;importjava.io.*;importjava.util.*;publicclassFileDemo{???publicstaticvoidmain(String[]args){?????
5、??try{???????????Filefile=newFile(args[0]);???????????if(file.isFile()){//是否為文件???????????????System.out.println(args[0]+"文件");???????????????System.out.print(?????????????????????file.canRead()?"可讀":"不可讀");???????????????System.out.print(?????????????????????file.canWrite()?"可寫(xiě)":"不可寫(xiě)");????????????
6、???System.out.println(?????????????????????file.length()+"字節(jié)");???????????}???????????else{???????????????//列出所有的文件及目錄???????????????File[]files=file.listFiles();???????????????ArrayListfileList=???????????????????????????????????newArrayList();???????????????for(inti=0;i7、+){???????????????????//先列出目錄???????????????????if(files[i].isDirectory()){//是否為目錄???????????????????????//取得路徑名???????????????????????System.out.println("["+???????????????????????????????files[i].ge