




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、輸入/輸出概述文件的順序訪問文件的隨機(jī)訪問目錄和文件管理 其他常用流處理輸入輸出概述l數(shù)據(jù)流(Stream): 一系列順序的字符或字節(jié)l編碼/解碼:將字符映射為它的二進(jìn)制形式的過程稱作編碼(encoding),反之,成為解碼(decoding)。l編碼表(encoding scheme): 字符有多種不同的編碼方式,定義該如何編碼每個(gè)字符的映射表 l輸入/輸出流:l輸入數(shù)據(jù)流從外部設(shè)備到到計(jì)算機(jī)的數(shù)據(jù)流動(dòng)l輸出數(shù)據(jù)流從計(jì)算機(jī)到外部設(shè)備的數(shù)據(jù)流動(dòng)l從結(jié)構(gòu)上分:l字節(jié)流:無須編碼與解碼轉(zhuǎn)換的二進(jìn)制位串l字符流:經(jīng)字符層面編碼與解碼轉(zhuǎn)化的二進(jìn)制位串。 計(jì)算機(jī)不區(qū)分字節(jié)與字符,內(nèi)部它們均是二進(jìn)制位串,
2、但字節(jié)是數(shù)據(jù)的二進(jìn)制直接表示;文本則是經(jīng)某種字符編碼后的二進(jìn)制位串。字節(jié)I/O 數(shù)值:199(字節(jié)流)二進(jìn)制文件內(nèi)容11000111 0 xC7文本I/O(字符ASCII碼) 數(shù)值串:199(字符流) 文件文件內(nèi)容00110001 00111001 00111001 0 x31 0 x39 0 x39解碼編碼輸入字節(jié)流類輸出字節(jié)流類輸入字符流類輸出字符流類l System類是繼承Object類終極類,它有三個(gè)表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤的類變量 (1)標(biāo)準(zhǔn)輸入:in public static final InputStream in /對(duì)應(yīng)鍵盤輸入 (2)標(biāo)準(zhǔn)輸出:out public
3、static final OutputStream in /對(duì)應(yīng)顯示器輸出 (3)標(biāo)準(zhǔn)錯(cuò)誤:err public static final PrintStream err /對(duì)應(yīng)顯示器輸出字節(jié)流輸入和輸出接口ObjectInputStreamOutputStreamFilterInputStreamFilterOutputStreamDataInputStreamDataOutputStreamDataInputDataOutputRandomAccessFile目錄和文件管理File類l java.io.File:java.lang.Object的子類,專門用來管理磁盤文件和目錄。l每個(gè)Fi
4、le類的對(duì)象表示一個(gè)磁盤文件或目錄,其對(duì)象屬性中包含了文件或目錄的相關(guān)信息,如文件或目錄的名稱、文件的長度、目錄中所含文件的個(gè)數(shù)等。l調(diào)用File類的方法則可以完成對(duì)文件或目錄的常用管理操作,如創(chuàng)建文件或目錄、刪除文件或目錄、查看文件的有關(guān)信息等。lFile類構(gòu)造方法 public File(String path): 用指定路徑構(gòu)造一個(gè)對(duì)象。public File(String path, String name): 用指定路徑和字符串構(gòu)造一個(gè)對(duì)象。 public File(File dir, String name): 用指定文件目錄和字符串構(gòu)造一個(gè)對(duì)象。 l常用方法:getName()
5、獲取對(duì)象所代表的文件名getParent() 獲取文件對(duì)象的路徑的父類信息getPath() 獲取對(duì)象所代表文件的路徑名canRead() 測試能否從指定的文件中讀數(shù)據(jù)canWrite() 測試能否對(duì)指定的文件寫入數(shù)據(jù)exists() 測試文件是否存在length() 獲取文件對(duì)象所代表的文件長度list() 獲取文件對(duì)象指定的目錄中文件列表getAbsolutePath() 獲取文件的絕對(duì)路徑getCanonicalPath() 獲取文件對(duì)象路徑名的標(biāo)準(zhǔn)格式isAbsolute() 測試此文件對(duì)象代表的文件是否是絕對(duì)路徑isDirectory() 測試此文件對(duì)象代表的文件是否是一個(gè)目錄isF
6、ile() 測試此對(duì)象所代表的是否是一個(gè)文件delete() 刪除此對(duì)象指定的文件makdir() 創(chuàng)建一個(gè)目錄,其路徑名由此文件對(duì)象指定makdirs() 創(chuàng)建一個(gè)目錄,其路徑名由此文件對(duì)象指定并包括 必要的父目錄l導(dǎo)入包:import java.io.*;l根據(jù)不同數(shù)據(jù)源和I/O任務(wù),建立字節(jié)流/字符流對(duì)象。l若需要對(duì)字節(jié)或字符流信息組織加工為數(shù)據(jù),在已建字若需要對(duì)字節(jié)或字符流信息組織加工為數(shù)據(jù),在已建字節(jié)流或字符流對(duì)象上構(gòu)建數(shù)據(jù)流對(duì)象。節(jié)流或字符流對(duì)象上構(gòu)建數(shù)據(jù)流對(duì)象。l用I/O流對(duì)象類的成員方法進(jìn)行讀寫操作,需要時(shí)設(shè)置讀寫位置指針。l關(guān)閉流操作。I/O流操作的一般步驟:流操作的一般步驟
7、:文件的順序訪問字節(jié)輸入流文件lFileInputStream類:讀取文件中字節(jié)數(shù)據(jù)的字節(jié)文件輸入流類。lFileInputStream類構(gòu)造方法lFileInputStream(String name) :用指定字符串創(chuàng)建對(duì)象。lFileInputStream(File file):用指定的文件對(duì)象創(chuàng)建對(duì)象。lFileInputStream類常用方法lread(): 從輸入流中讀取一個(gè)字節(jié)lread (byte b):將輸入數(shù)據(jù)存放在指定的字節(jié)數(shù)組b中l(wèi)read (byte b, int offset, int len):自輸入流中的offset位置開始讀取len個(gè)字節(jié)并存放在指定的數(shù)組b中
8、lavailable():返回輸入流中的可用字節(jié)個(gè)數(shù)lskip (long n):從輸入流中跳過n個(gè)字節(jié)。lFileOutputStream類:用于向文件寫入字節(jié)數(shù)據(jù)的字節(jié)文件輸出流。lFileOutputStream類構(gòu)造方法lFileOutputStream(String name): 使用指定的字符串創(chuàng)建對(duì)象。lFileOutputStream(File file):使用指定的文件對(duì)象創(chuàng)建對(duì)象。lFileOutputStream類的常用方法lwrite(int b): 寫入一個(gè)字節(jié)到文件輸入流。lwrite(byte b): 寫一個(gè)字節(jié)數(shù)組。lwrite(byte b,int offse
9、t, int len): 將字節(jié)數(shù)組b從offset位置開始的len個(gè)字節(jié)數(shù)組的數(shù)據(jù)寫到輸出流中。lgetFD(): 獲取與此流關(guān)聯(lián)的文件描述符。lclose(long n): 關(guān)閉輸入/輸出流,釋放占用的所有資源。文件的順序訪問字節(jié)輸出流文件舉例:寫讀字節(jié)流文件 lT16WriteReadByteFile.javal展示:l文件讀寫的一般步驟l字節(jié)流輸出到文件l顯示字節(jié)文件的內(nèi)容lFileInputStream和FileOutpuStream流淚不直接使用,而是與功能較強(qiáng)的I/O流類DataInputStream和DataOutputStream配合完成文件的高層次讀寫操作高層次讀寫操作。l
10、這兩個(gè)流文件支持:這兩個(gè)流文件支持:double, int, boolean,,字符串的讀寫。,字符串的讀寫。l舉例:T16WriteReadDataFile.javal除封裝外,寫入和讀出內(nèi)容同上例。上兩例區(qū)別:文件的順序訪問字符I/O流文件lFileWriter和FileReader類用于向文件寫入/讀出字符數(shù)據(jù)。lFileWriter類的構(gòu)造方法lFileWriter(String fileName):用指定的文件名創(chuàng)建本類對(duì)象。lFileWriter(File file):用指定的文件對(duì)象創(chuàng)建本類對(duì)象。lFileReader類的構(gòu)造方法lFileReader(String fileNa
11、me):用指定的文件名創(chuàng)建一個(gè)FileReader對(duì)象。lFileReader(File file):用指定的文件對(duì)象創(chuàng)建一個(gè)FileReader對(duì)象。lFileReader和FileWriter這兩個(gè)類沒有自己獨(dú)特的成員方法,它們的成員方法都直接繼承自父類的。lT16WriteReadCharFile.javal展示:l字符流輸出到文件(數(shù)值要保存成字符形式,就的形式轉(zhuǎn)換)l讀出字符文件的內(nèi)容文件的隨機(jī)訪問l隨機(jī)存取文件:可以定位到任意位置處進(jìn)行讀和寫的文件。lJava隨機(jī)文件是字節(jié)流文件。l文件指針:指示文件操作的當(dāng)前位置(順序文件時(shí)隱式的,隨機(jī)文件有操縱指針移動(dòng)的相關(guān)方法)。lRando
12、mAccessFile類的構(gòu)造方法lRandomAccessFile(File file, String mode):用指定字符串和存取模式創(chuàng)建其類對(duì)象。lRandomAccessFile(String name, String mode):用指定字符串和存取模式創(chuàng)建其類對(duì)象。l存取模式: lr_代表以只讀方式打開文件;lrw_代表以讀寫方式打開文件。lRandomAccessFile對(duì)象的讀寫操作和DataInput/DataOutput對(duì)象操作方式一樣,可以使用在DataInputStream和DataOutputStream里出現(xiàn)的所有read()和write()方法。l RandomA
13、ccessFile類中的常用成員方法:lread()lread(byte b)lread(byte b,int offset,int len)llength()lgetFilePointer() /取文件的指針位置 lseek(long pos)/指針放pos處lwrite(int b)lwrite(byte b)lwrite(byte b,int offset,int len)lclose()l新建RandomAccessFile對(duì)象文件位置指針位于文件開頭處。l每次讀寫操作后,文件位置指針都后移所讀寫的字節(jié)數(shù)。l利用seek()方法可以移動(dòng)文件指針到一個(gè)新的位置。l利用getPointer
14、()方法可以獲得本文件當(dāng)前的文件位置指針。l利用length()方法可以得到文件的字節(jié)長度。l利用getPointer()方法和length()方法可以判斷讀取的文件是否到文件尾部。l頂層類:Reader和Writer。lpublic abstract class Readerextends Objectimplements Readable, Closeablel用于讀取字符流的抽象類。子類必須實(shí)現(xiàn)的方法只有 read(char, int, int) 和 close()。但是,多數(shù)子類將重寫此處定義的一些方法,以提供更高的效率和/或其他功能。lpublic abstract class Wr
15、iterextends Objectimplements Appendable, Closeable, Flushablel寫入字符流的抽象類。子類必須實(shí)現(xiàn)的方法僅有 write(char, int, int)、flush() 和 close()。但是,多數(shù)子類將重寫此處定義的一些方法,以提供更高的效率和/或其他功能。ljava.io包中用于處理字符流的包中用于處理字符流的基本類(繼承抽象類基本類(繼承抽象類reader和和writer并實(shí)現(xiàn)之)并實(shí)現(xiàn)之) InputStreamReader和和OutputStreamWriter:lInputStreamReader是字節(jié)流通向字符流的橋梁:
16、它使用指定的 charset 讀取字節(jié)并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺(tái)默認(rèn)的字符集。lOutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節(jié)。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺(tái)默認(rèn)的字符集。lInputStreamReader主要構(gòu)造方法:主要構(gòu)造方法: InputStreamReader(InputStream in)創(chuàng)建一個(gè)使用默認(rèn)字符集的 InputStreamReader。InputStreamReader(InputStream in, Charset c
17、s)創(chuàng)建使用給定字符集的 InputStreamReader。InputStreamReader(InputStream in, CharsetDecoder dec)創(chuàng)建使用給定字符集解碼器的 InputStreamReader。InputStreamReader(InputStream in, String charsetName)創(chuàng)建使用指定字符集的 InputStreamReader。注意:以字節(jié)流為輸入?yún)?shù)!lOutputStreamWriter主要構(gòu)造方法:主要構(gòu)造方法:lOutputStreamWriter(OutputStream out)創(chuàng)建使用默認(rèn)字符編碼的 OutputS
18、treamWriter。OutputStreamWriter(OutputStream out, Charset cs)創(chuàng)建使用給定字符集的 OutputStreamWriter。OutputStreamWriter(OutputStream out, CharsetEncoder enc)創(chuàng)建使用給定字符集編碼器的 OutputStreamWriter。OutputStreamWriter(OutputStream out, String charsetName)創(chuàng)建使用指定字符集的 OutputStreamWriter。l注意:以字節(jié)流為輸入?yún)?shù)!lFileReader和和FileWrit
19、er的使用:的使用:lpublic class FileReaderextends InputStreamReaderl用來讀取字符文件的便捷類。此類的構(gòu)造方法假定默認(rèn)字符編碼和默認(rèn)字節(jié)緩沖區(qū)大小都是適當(dāng)?shù)?。要自己指定這些值,可以先在 FileInputStream 上構(gòu)造一個(gè) InputStreamReader。lFileReader 用于讀取字符流。要讀取原始字節(jié)流,請(qǐng)考慮使用 FileInputStream。lpublic class FileWriterextends OutputStreamWriterl用來寫入字符文件的便捷類。此類的構(gòu)造方法假定默認(rèn)字符編碼和默認(rèn)字節(jié)緩沖區(qū)大小都是可接受的。要自己指定這些值,可以先在 FileOutputStream 上構(gòu)造一個(gè) OutputStreamWriter。l文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 耐候性材料在幕墻中的應(yīng)用考核試卷
- 節(jié)能型紡織設(shè)備能效提升策略考核試卷
- 淀粉在金屬表面處理中的應(yīng)用考核試卷
- 蛋品加工設(shè)備選型與應(yīng)用案例分析考核試卷
- 谷物磨制對(duì)城市糧食供應(yīng)的影響考核試卷
- 糕點(diǎn)店顧客體驗(yàn)與口碑營銷考核試卷
- 選礦廠尾礦資源利用與環(huán)境保護(hù)考核試卷
- 個(gè)案護(hù)理演講方法與技巧
- 物流配送車輛租賃與冷鏈物流解決方案協(xié)議
- 電競選手直播平臺(tái)時(shí)長對(duì)賭協(xié)議范本
- 中考專項(xiàng)復(fù)習(xí)訓(xùn)練:課外古詩詞練習(xí)(附答案)
- 2025年高考作文素材積累:熱點(diǎn)人物+小眾金句
- 道路運(yùn)輸汛期安全教育
- 2025醫(yī)療機(jī)構(gòu)數(shù)據(jù)分類分級(jí)規(guī)范
- 軟件實(shí)施工程師個(gè)人述職報(bào)告
- 會(huì)議資料制作合同范本
- 蘇教版二年級(jí)下冊(cè)數(shù)學(xué)口算練習(xí)題
- 某中型轎車電動(dòng)助力轉(zhuǎn)向系統(tǒng)設(shè)計(jì)
- 2025年山東產(chǎn)權(quán)交易集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 十歲生日宴流程
- 《推進(jìn)鄉(xiāng)村振興中的的政府行為研究國內(nèi)外文獻(xiàn)綜述》5100字
評(píng)論
0/150
提交評(píng)論