




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北京傳智播客教育 Java 預(yù)熱班講義講師:屈博File類File類代表與平臺無關(guān)的文件和目錄,也就是說如果希望在程序中操作文件和目錄,都可以通過File類來完成。值得指出的是,不管是文件還是目錄都是使用File類操作的,F(xiàn)ile能新建、刪除、重命名文件和目錄,F(xiàn)ile不能訪問文件內(nèi)容本身,如果需要訪問文件內(nèi)容本身,則需要使用輸入/輸出流完成。北京傳智播客教育 File類方法1、訪問文件名相關(guān)方法:String getName(); 返回此file對象所表示的文件名或路徑名String getPath(); 返回此File對象所對應(yīng)的路徑名File getAbsoluteFile(); 返回此
2、File對象所對應(yīng)的的絕對路徑所對應(yīng)的File對象。String getAbsolutePath(); 返回此File對象所對應(yīng)的絕對路徑名boolean renameTo(File name); 重命名此File對象所對應(yīng)的文件或目錄,如果重命名成功,返回true,否則返回false。File類方法2、文件檢測相關(guān)方法:boolean exists(); 判斷文件或目錄是否存在boolean canWriter(); 判斷文件和目錄是否可寫boolean canReader(); 判斷文件和目錄是否可讀boolean isFile(); 判斷是否是文件,而不是目錄boolean isDire
3、ctory(); 平時是否目錄,而不是文件boolean isAbsolute(); 判斷是否是絕對路徑3、獲取常規(guī)文件信息long lastModified(); 返回文件最后修改時間long length(); 返回文件內(nèi)容的長度File類方法4、文件操作相關(guān)的方法boolean createNewFile(); 對應(yīng)的文件不存在時,該方法將新建一個該File對象所指定的新文件,如果存在返回true,否則返回falseboolean delete(); 刪除File對象對應(yīng)的文件或路徑static File createTempFile(String prerix, String suff
4、ix); 在默認(rèn)的臨時文件目錄中常見一個臨時的空文件,使用給定的前綴和系統(tǒng)生成的隨機(jī)數(shù)以及給定后綴作為文件名。static File createTempFile(String prerix, String suffix File directory); 在directory所指的目錄中創(chuàng)建一個臨時文件void deleteOnExit(); 注冊一個刪除鉤子,指定到那個Java虛擬機(jī)退出時,刪除File對象所對應(yīng)的文件和目錄File類方法5、目錄操作相關(guān)的方法boolean mkdir(); 試圖創(chuàng)建一個File對象所對應(yīng)的目錄,如果成功返回true,否則返回false,調(diào)用該方法的File
5、對象必須是一個路徑,而不是文件。String list(); 列出File對象的素有子文件名和路徑名File listFiles(); 列出File對象所有子文件和路static File listRoots(); 列出系統(tǒng)所有的根路徑文件過濾在Flie類list方法中可以接受一個FilenameFilter參數(shù),通過該參數(shù)可以只列出符合條件的文件。FilenameFilter接口里包含一個accept(File dir,String name)方法,該方法將依次對指定File的所有子目錄或者文件進(jìn)行迭代,如果該方法返回true,則list()方法會列出該子目錄或者文件。北京傳智播客教育 遞歸
6、函數(shù)直接或者間接的調(diào)用自己。注意:遞歸時一定要明確結(jié)束條件和遞歸次數(shù)(防止棧內(nèi)存溢出)。應(yīng)用場景:當(dāng)某一功能要重復(fù)使用時。練習(xí):列出一個文件夾下所有的子文件夾以及子文件思考:刪除一個目錄的過程是如何進(jìn)行的?練習(xí)刪除一個帶有內(nèi)容的目錄。輸入/輸出流體系分類字節(jié)輸入流字節(jié)輸出流字符輸入流字符輸出流抽象基類InputStreamOutputStreamReaderWriter訪問文件FileInputStreamFileOutPutStreamFileReaderFileWriter訪問數(shù)組ByteArrayInputStreamByteArrayOutputStreamCharArrayReade
7、rCharArrayWriter訪問管道PipedInputStreamPipedOutputStreamPipedReaderPipedWriter訪問字符串StringReaderStringWriter緩沖區(qū)BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter轉(zhuǎn)換流InputStreamReaderOutputStreamWriter對象流ObjectInputStreamObjectOutputStream抽象基類FilterInputstreamFilterOutputStreamFilterReade
8、rFilterWriter打印流PrintStreamPrintWriter推回流PushbackInputStreamPushbackReader特殊流DateInputStreamDateOutputStreamIO(Input Output)輸入、輸出流Java的IO通過java.io包下的類和接口來支持,在java.io包下主要包含輸入、輸出兩種IO流,每種輸入、輸出流又可分為字節(jié)流和字符流兩大類。其中字節(jié)流以字節(jié)為單位來處理輸入、輸出操作。而字符流則以字符來處理輸入、輸出操作。按照流向來分,可以將流分為輸入和輸出流。輸入流:只能從中讀取數(shù)據(jù),而不能向其寫入數(shù)據(jù)。輸出流:只能向其寫入數(shù)
9、據(jù),而不能從中讀取數(shù)據(jù)。北京傳智播客教育 IO(Input Output)輸入、輸出流按操作數(shù)據(jù)分為兩種:字節(jié)流與字符流。字節(jié)流和字符流的用法幾乎完全一樣,區(qū)別在于字節(jié)流和字符流所操作的數(shù)據(jù)單元不同字節(jié)流操作的是數(shù)據(jù)單元是8位的字節(jié),而字符流操作的數(shù)據(jù)單元是16位的字符,為了處理文字?jǐn)?shù)據(jù)方便而出現(xiàn)的對象,簡單說:字符流就是 : 字節(jié)流+編碼表。北京傳智播客教育 IO流常用基類字節(jié)流的抽象基類:InputStream ,OutputStream。字符流的抽象基類:Reader , Writer。注:由這四個類派生出來的子類名稱都是以其父類名作為子類名的后綴。如:InputStream的子類Fil
10、eInputStream。如:Reader的子類FileReader。北京傳智播客教育 IO程序的書寫導(dǎo)入IO包中的類進(jìn)行IO異常處理在finally中對流進(jìn)行關(guān)閉思考:有了垃圾回收機(jī)制為什么還要調(diào)用close方法進(jìn)行關(guān)閉。為什么IO異常一定要處理。例程北京傳智播客教育 字符流創(chuàng)建文件(FileWriter)創(chuàng)建流對象,建立數(shù)據(jù)存放文件FileWriter fw = new FileWriter(“Test.txt”);調(diào)用流對象的寫入方法,將數(shù)據(jù)寫入流fw.write(“text”);關(guān)閉流資源,并將流中的數(shù)據(jù)清空到文件中。fw.close();不寫close方法會有什么結(jié)果呢?如果想在原有
11、文件上繼續(xù)加入新的數(shù)據(jù)呢?北京傳智播客教育 完整代碼FileWriter fw = null;tryfw = new FileWriter(Test.txt);fw.write(text);catch (IOException e)System.out.println(e.toString();finallyIf(fw!=null)tryfw.close();catch (IOException e)System.out.println(e.toString();北京傳智播客教育 字符流讀取文件(FileReader)建立一個流對象,和指定的文件數(shù)據(jù)關(guān)聯(lián)。FileReader fr = new
12、 FileReader(“Test.txt”);創(chuàng)建一個臨時存放數(shù)據(jù)的數(shù)組。char ch = new char1024;調(diào)用流對象的讀取方法將流中的數(shù)據(jù)讀入到數(shù)組中。fr.read(ch);思考:在加載文件時候是否是將文件全部加載進(jìn)流為什么定義數(shù)組,要定義多大呢?北京傳智播客教育 完整代碼FileReader fr = null;tryfr = new FileReader(c:test.txt);char buf = new char1024;int len= 0;while(len=fr.read(buf)!=-1)System.out.println(new String(buf,0,
13、len);catch (IOException e)System.out.println(read-Exception :+e.toString();finallyif(fr!=null)tryfr.close();catch (IOException e)System.out.println(close-Exception :+e.toString();北京傳智播客教育 練習(xí)復(fù)制文本文件定義文件路徑時,可以用“/”或者“”。在創(chuàng)建一個文件時,如果目錄下有同名文件將被覆蓋。在讀取文件時,必須保證該文件已存在,否則出異常。練習(xí):Copy一個文本文件。北京傳智播客教育 字符流的緩沖區(qū)緩沖區(qū)的出現(xiàn)提
14、高了對數(shù)據(jù)的讀寫效率。對應(yīng)類BufferedWriterBufferedReader緩沖區(qū)要結(jié)合流才可以使用。在流的基礎(chǔ)上對流的功能進(jìn)行了增強(qiáng)。BufferedWriter字符緩沖區(qū),它用于提高寫的效率,需要和指定的輸出流對象關(guān)聯(lián)。字符緩沖區(qū),擁有自己獨(dú)特方法newLine(),目的是獲取系統(tǒng)默認(rèn)的換行符進(jìn)行換行。字符緩沖區(qū)不能單獨(dú)存在,必須建立流的基礎(chǔ)上。BufferedReader從字符輸入流中讀取文本,緩沖各個字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取。可以指定緩沖區(qū)的大小,或者可使用默認(rèn)的大小。大多數(shù)情況下,默認(rèn)值就足夠大了。字符緩沖區(qū)讀取(輸入)流,同樣需要建立在讀取(輸入)流的基礎(chǔ)上,
15、不能單獨(dú)存在。特有方法:readerLine();從緩沖區(qū)讀取數(shù)據(jù),進(jìn)行臨時存儲,直到讀取到換行,將讀取到的數(shù)據(jù)轉(zhuǎn)成字符串返回。北京傳智播客教育 裝飾設(shè)計模式對原有類進(jìn)行了功能的改變,增強(qiáng)。裝飾模式的基本格式。它與繼承有什么不同?了解BufferedReader的原理。練習(xí):模擬一個BufferedReader類。模擬一個LineNumberReader類。練習(xí)通過緩沖區(qū)實(shí)現(xiàn)文本文件的copy北京傳智播客教育 字節(jié)流基本操作與字符流類相同字節(jié)流的基類:InputStream 字節(jié)輸入流OutputStream 字節(jié)輸出流但它不僅可以操作字符,還可以操作其他媒體文件例程Copy一個Jpg文件。北
16、京傳智播客教育 字節(jié)流的緩沖區(qū)同樣是提高了字節(jié)流的讀寫效率。練習(xí):通過幾種方式對MP3的進(jìn)行拷貝,比較它們的效率。模擬一個BufferedInputStream讀取鍵盤錄入通過System.in可以獲取“標(biāo)準(zhǔn)”輸入流。InputStream in = System.in;int ch1 = in.read();北京傳智播客教育 轉(zhuǎn)換流輸入/輸出流體系中提供了兩個轉(zhuǎn)換流,這兩個轉(zhuǎn)換流用于實(shí)現(xiàn)將字節(jié)流轉(zhuǎn)換成字符流,其中InputStreamReader將字節(jié)輸入流轉(zhuǎn)換成字符輸入流,OutputStreamWriter將字節(jié)輸出流轉(zhuǎn)成字符輸出流。轉(zhuǎn)換流的應(yīng)用字節(jié)流中的數(shù)據(jù)都是字符時,轉(zhuǎn)成字符流操作更
17、高效。例程:標(biāo)準(zhǔn)輸入輸出。北京傳智播客教育 標(biāo)準(zhǔn)輸入輸出流System類中的字段:in,out。它們各代表了系統(tǒng)標(biāo)準(zhǔn)的輸入和輸出設(shè)備。默認(rèn)輸入設(shè)備是鍵盤,輸出設(shè)備是顯示器。System.in的類型是InputStream.System.out的類型是PrintStream是OutputStream的子類FilterOutputStream 的子類.北京傳智播客教育 標(biāo)準(zhǔn)輸入輸出流示例例:獲取鍵盤錄入數(shù)據(jù),然后將數(shù)據(jù)流向顯示器,那么顯示器就是目的地。通過System類的setIn,setOut方法對默認(rèn)設(shè)備進(jìn)行改變。System.setIn(new FileInputStream(“1.txt”
18、);/將源改成文件1.txt。System.setOut(new PrintStream(“2.txt”);/將目的改成文件2.txt因?yàn)槭亲止?jié)流處理的是文本數(shù)據(jù),可以轉(zhuǎn)換成字符流,操作更方便。BfferedReader bufr = new BufferedReader(new InputStreamReader(System.in);BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out);北京傳智播客教育 流的基本應(yīng)用小節(jié)流是用來處理數(shù)據(jù)的。處理數(shù)據(jù)時,一定要先明確數(shù)據(jù)源,與數(shù)據(jù)目的地(數(shù)據(jù)匯)
19、。數(shù)據(jù)源可以是文件,可以是鍵盤。數(shù)據(jù)目的地可以是文件、顯示器或者其他設(shè)備。而流只是在幫助數(shù)據(jù)進(jìn)行傳輸,并對傳輸?shù)臄?shù)據(jù)進(jìn)行處理,比如過濾處理.轉(zhuǎn)換處理等。IO練習(xí)總結(jié)復(fù)制一個文本文件1、明確體系:源:InputStream ,Reader 目的:OutputStream ,Writer2、明確數(shù)據(jù):源:是純文本嗎?是 Reader 目的;是純文本嗎?是 Writer3、明確設(shè)備:源:硬盤上的一個文件FileReader 目的:硬盤上的一個文件。FileWriter4、需要額外功能嗎?需要,高效,使用buffer北京傳智播客教育 字符流繼承體系簡圖字符流ReaderWriterInputStrea
20、mReaderOutputStreamWriterFileReaderFileWriterBufferedReaderBufferedWriter北京傳智播客教育 字節(jié)流繼承體系簡圖FileInputStream字節(jié)流FilterInputStreamFilterOutputStreamBufferedInputStreamBufferedOutputStreamInputStreamOutputStreamFileOutputStream功能流IO包中還有一些具有特殊功能的流對象,這些流都是用來解決特定問題,在學(xué)習(xí)時,只要記住它們彼此的特定功能就可以。打印流(PrintStream)Prin
21、tStream:字節(jié)打印流。特點(diǎn):1、構(gòu)造函數(shù)接收File對象,字符串路徑,字節(jié)輸出流。意味著打印目的可以有很多。2、該對象具備特有的方法打印方法 print和println,可以打印任何類型的數(shù)據(jù)。3、特有的print方法可以保持任意類型數(shù)據(jù)表現(xiàn)形式的原樣性,將數(shù)據(jù)輸出到目的地。對于OutputStream父類中的write,是將數(shù)據(jù)的最低字節(jié)寫出去。PriteStream演示打印流(PrintWriter)PrintWriter字符打印流.特點(diǎn):1、當(dāng)操作的數(shù)據(jù)是字符時,可以選擇PrintWriter,比PrintStream要方便。2、它的構(gòu)造函數(shù)可以接收 File對象,字符串路徑,字節(jié)
22、輸出流,字符輸出流。3、構(gòu)造函數(shù)中,如果參數(shù)是輸出流,那么可以通過指定另一個參數(shù)true完成自動刷新,該true對println方法有效。PrinteWrite演示標(biāo)準(zhǔn)的輸入、輸出流不需要關(guān)閉,一旦關(guān)閉了,程序后面將無法獲取到此流。標(biāo)準(zhǔn)輸入、輸出流在程序啟動的時候兩個流對象就創(chuàng)建了。SequenceInputStream序列流特點(diǎn):1,將多個字節(jié)讀取流和并成一個讀取流,將多個源合并成一個源,操作起來方便。2,創(chuàng)建對象時,需要明確多個流。3,需要的枚舉接口可以通過Collections.enumeration(collection);練習(xí):文件分割程序。SequenceInputStream序列
23、流操作對象的流操作對象ObjectInputStream與ObjectOutputStream被操作的對象需要實(shí)現(xiàn)Serializable (標(biāo)記接口);靜態(tài)數(shù)據(jù)不會被序列化。transient 可以讓非靜態(tài)的數(shù)據(jù)不被序列化若某個類的對象需要序列化,就需要實(shí)現(xiàn)Serializable標(biāo)記接口,該接口給需要序列化的類,提供了一個序列版本號serialVersionUID,該版本號的目的在于驗(yàn)證序列化的對象和對應(yīng)類是否版本匹配。對象的序列化對象的序列化時的問題java.io.NotSerializableException:發(fā)生此異常的主要原因是要被序列化的對象所屬的類未實(shí)現(xiàn)java.io.Ser
24、ializable 接口對象的反序列化序列化需要注意的問題在進(jìn)行序列化時,一般被序列化的對象所屬的類不僅要實(shí)現(xiàn)java.io.Serializable 接口,還在類中聲明名為 serialVersionUID 的字段(該字段必須是靜態(tài) (static)、最終 (final) 的 long 型字段)顯式聲明其自己的 serialVersionUID:RandomAccessFile類此類的實(shí)例支持對隨機(jī)訪問文件的讀取和寫入創(chuàng)建RandomAccessFile對象時,如果文件不存在則創(chuàng)建。若存在則不創(chuàng)建也不會發(fā)生覆蓋特點(diǎn):1,即可讀取,又可以寫入。2,內(nèi)部維護(hù)了一個大型的byte數(shù)組,通過對數(shù)組的操作完成讀取和寫入。3,通過getFilePointer方法獲取指針的位置,還可以通過seek方法設(shè)置指針的位置。4,該對象的內(nèi)容應(yīng)該封裝了字節(jié)輸入流和字節(jié)輸出流。5,該對象只能操作文件。6,只能操作(讀寫)具有規(guī)律的文件數(shù)據(jù)。通過seek方法操作指針,可以從這個數(shù)組中的任意位置上進(jìn)行讀和寫可以完成對數(shù)據(jù)的修改。但是要注意:數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商場租賃合同范本2
- 八年級歷史下冊 第三學(xué)習(xí)主題 建設(shè)中國特色社會主義 第9課 開放的中國走向世界教學(xué)設(shè)計3 川教版
- 九年級語文下冊 第六單元 22《出師表》教學(xué)設(shè)計1 新人教版
- 推動消費(fèi)品以舊換新政策的實(shí)施與發(fā)展路徑
- 小學(xué)語文人教部編版四年級下冊第一單元口語交際:轉(zhuǎn)述教案
- 透析患者內(nèi)瘺的自我護(hù)理
- 保障性租賃住房項(xiàng)目發(fā)展前景分析
- 一步到位2025年特許金融分析師考試試題及答案
- 探索品牌價值與“消費(fèi)者關(guān)系”模型計劃
- 銀行從業(yè)資格證考試2025年進(jìn)步路徑試題及答案
- MOOC 軟件質(zhì)量保證-西安交通大學(xué) 中國大學(xué)慕課答案
- 24春國家開放大學(xué)《農(nóng)業(yè)推廣》形考任務(wù)1-5參考答案
- 新教科版五下科學(xué)1.5《當(dāng)環(huán)境改變了》教學(xué)設(shè)計
- 鄭州工業(yè)應(yīng)用技術(shù)學(xué)院單招《職測》參考試題庫(含答案)
- 提醒納米顆粒對環(huán)境的影響
- 血液科護(hù)士的造血干細(xì)胞移植護(hù)理
- HGE系列電梯安裝調(diào)試手冊(ELS05系統(tǒng)SW00004269,A.4 )
- 護(hù)理教學(xué)查房組織與實(shí)施
- 小學(xué)五年級家長會課件
- 機(jī)動車檢測站儀器設(shè)備日常維護(hù)和保養(yǎng)作業(yè)指導(dǎo)書
- 立式數(shù)控銑床工作臺(X軸)設(shè)計
評論
0/150
提交評論