第11章輸入輸出_第1頁(yè)
第11章輸入輸出_第2頁(yè)
第11章輸入輸出_第3頁(yè)
第11章輸入輸出_第4頁(yè)
第11章輸入輸出_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.第第11/輸出輸出本章要點(diǎn)本章要點(diǎn)u 了解了解Java中流的概念中流的概念u 了解了解Java中輸入輸出流的分類中輸入輸出流的分類u 掌握文件輸入輸出流的使用方法掌握文件輸入輸出流的使用方法u 掌握帶緩存的輸入輸出流的使用掌握帶緩存的輸入輸出流的使用u 了解了解ZIP壓縮輸入輸出流的應(yīng)用壓縮輸入輸出流的應(yīng)用.第第11章章 輸入輸入/輸出輸出主要內(nèi)容主要內(nèi)容.11.1 輸入輸入/輸出流輸出流n通常程序需要通常程序需要從外部獲取從外部獲取/輸出信息輸出信息這個(gè)這個(gè)“外部外部”范圍很廣,包括諸如范圍很廣,包括諸如鍵盤(pán)、顯鍵盤(pán)、顯示器、文件示器、文件、磁盤(pán)、網(wǎng)絡(luò)、另外一個(gè)程序等、磁盤(pán)、網(wǎng)絡(luò)、另外一個(gè)

2、程序等“信息信息”也可以是任何類型的,例如一個(gè)對(duì)也可以是任何類型的,例如一個(gè)對(duì)象、字符串、圖像、聲音等象、字符串、圖像、聲音等n通過(guò)使用通過(guò)使用java.io包包中的中的輸入輸入/輸出流類輸出流類就可以就可以達(dá)到輸入輸出信息的目的達(dá)到輸入輸出信息的目的.nJava所有的所有的I/O機(jī)制都是基于機(jī)制都是基于數(shù)據(jù)流數(shù)據(jù)流進(jìn)行輸進(jìn)行輸入輸出,這些數(shù)據(jù)流表示了入輸出,這些數(shù)據(jù)流表示了字符或者字節(jié)數(shù)字符或者字節(jié)數(shù)據(jù)據(jù)的流動(dòng)序列。的流動(dòng)序列。nJava的的I/O流流提供了讀寫(xiě)數(shù)據(jù)的標(biāo)準(zhǔn)方法提供了讀寫(xiě)數(shù)據(jù)的標(biāo)準(zhǔn)方法n任何任何Java中表示數(shù)據(jù)源的對(duì)象都會(huì)提供以中表示數(shù)據(jù)源的對(duì)象都會(huì)提供以數(shù)數(shù)據(jù)流的方式據(jù)流的

3、方式讀寫(xiě)它的數(shù)據(jù)的方法。讀寫(xiě)它的數(shù)據(jù)的方法。nJava.io是大多數(shù)面向數(shù)據(jù)流的輸入是大多數(shù)面向數(shù)據(jù)流的輸入/輸出類輸出類的主要軟件包。的主要軟件包。11.1 輸入輸入/輸出流輸出流.n數(shù)據(jù)流數(shù)據(jù)流是一串連續(xù)不斷的數(shù)據(jù)的集合。是一串連續(xù)不斷的數(shù)據(jù)的集合。n數(shù)據(jù)寫(xiě)入程序數(shù)據(jù)寫(xiě)入程序可以是一段、一段地向數(shù)據(jù)流可以是一段、一段地向數(shù)據(jù)流管道中寫(xiě)入數(shù)據(jù),這些數(shù)據(jù)段會(huì)按先后順序管道中寫(xiě)入數(shù)據(jù),這些數(shù)據(jù)段會(huì)按先后順序形成一個(gè)長(zhǎng)的數(shù)據(jù)流。形成一個(gè)長(zhǎng)的數(shù)據(jù)流。n對(duì)數(shù)據(jù)讀取程序來(lái)說(shuō),看不到數(shù)據(jù)流在寫(xiě)入對(duì)數(shù)據(jù)讀取程序來(lái)說(shuō),看不到數(shù)據(jù)流在寫(xiě)入時(shí)的分段情況,每次可以讀取其中的任意長(zhǎng)時(shí)的分段情況,每次可以讀取其中的任意

4、長(zhǎng)度的數(shù)據(jù),但度的數(shù)據(jù),但只能先讀取前面的數(shù)據(jù)后,再只能先讀取前面的數(shù)據(jù)后,再讀取后面的數(shù)據(jù)讀取后面的數(shù)據(jù)。11.1 輸入輸入/輸出流輸出流.n一組有序,有起點(diǎn)和終點(diǎn)的字節(jié)的數(shù)據(jù)序列。一組有序,有起點(diǎn)和終點(diǎn)的字節(jié)的數(shù)據(jù)序列。n包括輸入流和輸出流。包括輸入流和輸出流。11.1 輸入輸入/輸出流輸出流.11.1.1 I/O流的概念流的概念 在在Java中將信息的輸入輸出過(guò)程抽象為中將信息的輸入輸出過(guò)程抽象為I/O流流n輸入是指數(shù)據(jù)流入程序輸入是指數(shù)據(jù)流入程序n輸出是指數(shù)據(jù)從程序流出輸出是指數(shù)據(jù)從程序流出一個(gè)流就是一個(gè)從源流向目的地的數(shù)據(jù)序列一個(gè)流就是一個(gè)從源流向目的地的數(shù)據(jù)序列IO流類一旦被創(chuàng)建就

5、會(huì)自動(dòng)打開(kāi)流類一旦被創(chuàng)建就會(huì)自動(dòng)打開(kāi)通過(guò)調(diào)用通過(guò)調(diào)用close方法方法,可以顯式關(guān)閉任何一個(gè),可以顯式關(guān)閉任何一個(gè)流,如果流對(duì)象不再被引用,流,如果流對(duì)象不再被引用,Java的垃圾回的垃圾回收機(jī)制也會(huì)隱式地關(guān)閉它收機(jī)制也會(huì)隱式地關(guān)閉它.11.1.1 I/O流的概念流的概念n輸入流輸入流為了從信息源獲取信息,程序打開(kāi)一個(gè)輸為了從信息源獲取信息,程序打開(kāi)一個(gè)輸入流,程序可從輸入流讀取信息入流,程序可從輸入流讀取信息.11.1.1 I/O流的概念流的概念n輸出流輸出流當(dāng)程序需要向目標(biāo)位置寫(xiě)信息時(shí),便需要當(dāng)程序需要向目標(biāo)位置寫(xiě)信息時(shí),便需要打開(kāi)一個(gè)輸出流,程序通過(guò)輸出流向這個(gè)打開(kāi)一個(gè)輸出流,程序通過(guò)輸

6、出流向這個(gè)目標(biāo)位置寫(xiě)信息目標(biāo)位置寫(xiě)信息9.對(duì)象對(duì)象源源? /目標(biāo)目標(biāo)? 或兩者或兩者?disk file running program monitor keyboard Internet connection image scanner mouse BothBothDestinationSourceBothSourceSource11.1.1 I/O流的概念流的概念n源和目標(biāo)的類型源和目標(biāo)的類型.n讀寫(xiě)數(shù)據(jù)的方法讀寫(xiě)數(shù)據(jù)的方法不論數(shù)據(jù)從哪來(lái),到哪去,也不論數(shù)據(jù)不論數(shù)據(jù)從哪來(lái),到哪去,也不論數(shù)據(jù)本身是何類型,讀寫(xiě)數(shù)據(jù)的方法大體上本身是何類型,讀寫(xiě)數(shù)據(jù)的方法大體上都是一樣的都是一樣的讀讀寫(xiě)寫(xiě)打開(kāi)

7、一個(gè)流打開(kāi)一個(gè)流讀信息讀信息關(guān)閉流關(guān)閉流打開(kāi)一個(gè)流打開(kāi)一個(gè)流寫(xiě)信息寫(xiě)信息關(guān)閉流關(guān)閉流11.1.1 I/O流的概念流的概念.11.1.1 I/O流的概念流的概念n緩沖流緩沖流:為流配備一個(gè)緩沖區(qū):為流配備一個(gè)緩沖區(qū)(buffer)緩沖區(qū)緩沖區(qū)就是一塊存儲(chǔ)區(qū)域,用來(lái)輔助與外部就是一塊存儲(chǔ)區(qū)域,用來(lái)輔助與外部設(shè)備的數(shù)據(jù)傳輸,從而提高數(shù)據(jù)的傳輸效率設(shè)備的數(shù)據(jù)傳輸,從而提高數(shù)據(jù)的傳輸效率在實(shí)現(xiàn)在實(shí)現(xiàn)寫(xiě)數(shù)據(jù)寫(xiě)數(shù)據(jù)時(shí),先將這些數(shù)據(jù)時(shí),先將這些數(shù)據(jù)寫(xiě)入流緩沖寫(xiě)入流緩沖區(qū)區(qū),而并不直接將它們送入輸出設(shè)備,流緩,而并不直接將它們送入輸出設(shè)備,流緩沖區(qū)的數(shù)據(jù)量會(huì)被自動(dòng)地跟蹤,一旦發(fā)現(xiàn)沖區(qū)的數(shù)據(jù)量會(huì)被自動(dòng)地跟蹤,一旦

8、發(fā)現(xiàn)緩緩沖區(qū)滿了沖區(qū)滿了,就會(huì)將其中的數(shù)據(jù),就會(huì)將其中的數(shù)據(jù)一次性傳輸一次性傳輸?shù)降酵獠吭O(shè)備上,緩沖區(qū)變?yōu)榭胀獠吭O(shè)備上,緩沖區(qū)變?yōu)榭湛梢詼p少與外部設(shè)備打交道的次數(shù)可以減少與外部設(shè)備打交道的次數(shù).11.1.2 預(yù)定義的預(yù)定義的I/O流類概述流類概述n從流的方向劃分從流的方向劃分輸入流輸入流輸出流輸出流n從流的分工劃分從流的分工劃分節(jié)點(diǎn)流節(jié)點(diǎn)流處理流處理流n從流的內(nèi)容劃分從流的內(nèi)容劃分面向字符的流面向字符的流(字符流字符流)面向字節(jié)的流面向字節(jié)的流(二進(jìn)制流二進(jìn)制流).11.1.2 預(yù)定義的預(yù)定義的I/O流類概述流類概述njava.io包包的頂級(jí)層次結(jié)構(gòu)的頂級(jí)層次結(jié)構(gòu)面向字符的流:專門(mén)用于字符數(shù)據(jù)

9、面向字符的流:專門(mén)用于字符數(shù)據(jù)面向字節(jié)的流:用于一般目的面向字節(jié)的流:用于一般目的.1) 面向字符的流面向字符的流n面向字符的流面向字符的流針對(duì)針對(duì)字符數(shù)據(jù)的特點(diǎn)字符數(shù)據(jù)的特點(diǎn)進(jìn)行過(guò)進(jìn)行過(guò)優(yōu)化優(yōu)化,提,提供一些面向字符的有用特性供一些面向字符的有用特性源或目標(biāo)通常是源或目標(biāo)通常是文本文件文本文件.n面向字符的抽象類面向字符的抽象類Reader和和Writerjava.io包中所有包中所有字符流字符流的的抽象基類抽象基類Reader提供了提供了輸入輸入字符的字符的APIWriter提供了提供了輸出輸出字符的字符的API多數(shù)程序使用這兩個(gè)抽象類的一系列子類多數(shù)程序使用這兩個(gè)抽象類的一系列子類來(lái)讀入

10、來(lái)讀入/寫(xiě)出文本信息寫(xiě)出文本信息1) 面向字符的流面向字符的流.陰影部分為節(jié)點(diǎn)流陰影部分為節(jié)點(diǎn)流1) 面向字符的流面向字符的流.n數(shù)據(jù)源或目標(biāo)中含有非字符數(shù)據(jù),必須用字?jǐn)?shù)據(jù)源或目標(biāo)中含有非字符數(shù)據(jù),必須用字節(jié)流來(lái)輸入節(jié)流來(lái)輸入/輸出輸出n通常被用來(lái)讀寫(xiě)諸如圖片、聲音之類的二進(jìn)通常被用來(lái)讀寫(xiě)諸如圖片、聲音之類的二進(jìn)制數(shù)據(jù)制數(shù)據(jù)n絕大多數(shù)數(shù)據(jù)是被存儲(chǔ)為二進(jìn)制文件的,絕大多數(shù)數(shù)據(jù)是被存儲(chǔ)為二進(jìn)制文件的,世世界上的文本文件大約只能占到界上的文本文件大約只能占到2,通常二,通常二進(jìn)制文件要比含有相同數(shù)據(jù)量的文本文件小進(jìn)制文件要比含有相同數(shù)據(jù)量的文本文件小得多得多2) 面向字節(jié)的流面向字節(jié)的流.nInpu

11、tStream和和OutputStream是用來(lái)處理是用來(lái)處理8位字節(jié)流位字節(jié)流的抽象基類,程序使的抽象基類,程序使用這兩個(gè)類的子類來(lái)讀寫(xiě)用這兩個(gè)類的子類來(lái)讀寫(xiě)8位的字節(jié)信息位的字節(jié)信息分為兩部分分為兩部分n節(jié)點(diǎn)流節(jié)點(diǎn)流n處理流處理流2) 面向字節(jié)的流面向字節(jié)的流.陰影部分為節(jié)點(diǎn)流陰影部分為節(jié)點(diǎn)流2) 面向字節(jié)的流面向字節(jié)的流.3) 標(biāo)準(zhǔn)輸入輸出標(biāo)準(zhǔn)輸入輸出n標(biāo)準(zhǔn)輸入輸出流對(duì)象,標(biāo)準(zhǔn)輸入輸出流對(duì)象,System類靜態(tài)成員變量類靜態(tài)成員變量System.in: InputStream類型的,代表標(biāo)類型的,代表標(biāo)準(zhǔn)輸入流,這個(gè)流是已經(jīng)打開(kāi)了的,準(zhǔn)輸入流,這個(gè)流是已經(jīng)打開(kāi)了的,默認(rèn)狀默認(rèn)狀態(tài)對(duì)應(yīng)于鍵

12、盤(pán)輸入。態(tài)對(duì)應(yīng)于鍵盤(pán)輸入。System.out:PrintStream類型的,代表標(biāo)類型的,代表標(biāo)準(zhǔn)輸出流,準(zhǔn)輸出流,默認(rèn)狀態(tài)對(duì)應(yīng)于屏幕輸出默認(rèn)狀態(tài)對(duì)應(yīng)于屏幕輸出System.err:PrintStream類型的,代表標(biāo)類型的,代表標(biāo)準(zhǔn)錯(cuò)誤信息輸出流,準(zhǔn)錯(cuò)誤信息輸出流,默認(rèn)狀態(tài)對(duì)應(yīng)屏幕輸出默認(rèn)狀態(tài)對(duì)應(yīng)屏幕輸出.public class Echo public static void main(String args) throws IOException BufferedReader in = new BufferedReader( new InputStreamReader(System.i

13、n); String s; while(s = in.readLine().length()!= 0) System.out.println(s); 運(yùn)行結(jié)果運(yùn)行結(jié)果Hello!Hello!.nSystem.in程序啟動(dòng)時(shí)由程序啟動(dòng)時(shí)由Java系統(tǒng)自動(dòng)創(chuàng)建的流對(duì)象系統(tǒng)自動(dòng)創(chuàng)建的流對(duì)象,它是原始的字節(jié)流,它是原始的字節(jié)流,不能直接從中讀取字符不能直接從中讀取字符,需要對(duì)其進(jìn)行進(jìn)一步的處理需要對(duì)其進(jìn)行進(jìn)一步的處理nInputStreamReader(System.in)以以System.in為參數(shù)創(chuàng)建一個(gè)為參數(shù)創(chuàng)建一個(gè)InputStreamReader流對(duì)象流對(duì)象,相當(dāng)于字節(jié)流和字符流之間的一座橋

14、,相當(dāng)于字節(jié)流和字符流之間的一座橋梁,讀取字節(jié)并將其轉(zhuǎn)換為字符梁,讀取字節(jié)并將其轉(zhuǎn)換為字符nBufferedReader in對(duì)對(duì)InputStreamReader處理后的信息進(jìn)行緩沖,處理后的信息進(jìn)行緩沖,以提高效率以提高效率.4) 處理流處理流n不直接與數(shù)據(jù)源或目標(biāo)相連,而是不直接與數(shù)據(jù)源或目標(biāo)相連,而是基于另一個(gè)基于另一個(gè)流來(lái)構(gòu)造流來(lái)構(gòu)造n從流讀寫(xiě)數(shù)據(jù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行處理從流讀寫(xiě)數(shù)據(jù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行處理n實(shí)例中的實(shí)例中的InputStreamReader和和BufferedReader都都屬于處理流屬于處理流InputStreamReader讀取字節(jié)并轉(zhuǎn)換為字符讀取字節(jié)并轉(zhuǎn)換為字符Buf

15、feredReader對(duì)另一個(gè)流產(chǎn)生的數(shù)據(jù)進(jìn)行對(duì)另一個(gè)流產(chǎn)生的數(shù)據(jù)進(jìn)行緩沖緩沖.用一行表達(dá)式實(shí)現(xiàn):用一行表達(dá)式實(shí)現(xiàn):BufferedReader stdin = new BufferedReader ( new InputStreamReader(System.in) ); 4) 處理流處理流.5) I/O異常異常n多數(shù)多數(shù)IO方法在遇到錯(cuò)誤時(shí)會(huì)拋出異常方法在遇到錯(cuò)誤時(shí)會(huì)拋出異常,因此調(diào),因此調(diào)用這些方法時(shí)必須用這些方法時(shí)必須在方法頭聲明拋出在方法頭聲明拋出IOException異常異?;蛘咴诨蛘咴趖ry塊中執(zhí)行塊中執(zhí)行IO,然后捕獲,然后捕獲IOException. 11.1.3 File

16、類類 n表示磁盤(pán)文件信息表示磁盤(pán)文件信息n定義了一些與平臺(tái)無(wú)關(guān)的方法來(lái)操縱文件定義了一些與平臺(tái)無(wú)關(guān)的方法來(lái)操縱文件創(chuàng)建、刪除文件創(chuàng)建、刪除文件重命名文件重命名文件判斷文件的讀寫(xiě)權(quán)限及是否存在判斷文件的讀寫(xiě)權(quán)限及是否存在設(shè)置和查詢文件的最近修改時(shí)間等設(shè)置和查詢文件的最近修改時(shí)間等n構(gòu)造文件流可以使用構(gòu)造文件流可以使用File類的對(duì)象作為參數(shù)類的對(duì)象作為參數(shù).public File(String name) 指定與 File 對(duì)象關(guān)聯(lián)的文件或目錄的名稱, name 可以包含路徑信息及文件或目錄名 public File(String pathToName, String name) 使用參數(shù) pa

17、thToName(絕對(duì)路徑或相對(duì)路徑)來(lái)定位參數(shù) name 所指定的文件或目錄 public File(File directory, String name) 使用現(xiàn)有的File對(duì)象directory(絕對(duì)路徑或相對(duì)路徑)來(lái)定位參數(shù) name 所指定的文件或目錄 public File(URI rui) 使用給定的統(tǒng)一資源定位符(uniform resource identifier,URI)來(lái)定位文件 11.1.3 File 類類 .boolean canRead() 如果文件可讀,則返回真,否則返回假 boolean canWrite() 如果文件可寫(xiě),則返回真,否則返回假 boolea

18、n exists() 如果File構(gòu)造函數(shù)參數(shù)所指定的名稱是指定路徑中的文件或目錄,則返回真,否則返回假 boolean createNewFile() 如果文件不存在,則創(chuàng)建這個(gè)名字的空文件,并返回真,如果文件存在,則返回假 boolean isFile() 如果 File 構(gòu)造函數(shù)參數(shù)所指定的名稱是一個(gè)文件,則返回真,否則返回假 boolean isDirectory() 如果 File 構(gòu)造函數(shù)參數(shù)所指定的名稱是一個(gè)目錄,則返回真,否則返回假 boolean isAbsolute() 如果File構(gòu)造函數(shù)參數(shù)所指定的名稱是一個(gè)文件或目錄的絕對(duì)路徑,則返回真,否則返回假 boolean d

19、elete() 刪除文件或目錄,如果是目錄,必須是空目錄才能刪除成功,刪除成功返回真,否則返回假 11.1.3 File 類類 .public static void main(String args) throws IOException new File(D:+ File.separator+Hello.txt); if (f.exists() f.delete(); else try f.createNewFile(); catch(Exception e) System.out.println(e.getMessage(); .n運(yùn)行結(jié)果運(yùn)行結(jié)果因?yàn)樵诶驗(yàn)樵诶?1_2中已經(jīng)創(chuàng)建了中已

20、經(jīng)創(chuàng)建了d:Hello.txt,所,所以第一次運(yùn)行將刪除這個(gè)文件以第一次運(yùn)行將刪除這個(gè)文件第二次運(yùn)行則又創(chuàng)建了一個(gè)此名的空文件第二次運(yùn)行則又創(chuàng)建了一個(gè)此名的空文件n分析分析在試圖打開(kāi)文件之前,可以使用在試圖打開(kāi)文件之前,可以使用File類的類的isFile方法來(lái)確定方法來(lái)確定File對(duì)象是否代表一個(gè)文件對(duì)象是否代表一個(gè)文件而非目錄)而非目錄)還可通過(guò)還可通過(guò)exists方法判斷同名文件或路徑是否方法判斷同名文件或路徑是否存在,進(jìn)而采取正確的方法,以免造成誤操作存在,進(jìn)而采取正確的方法,以免造成誤操作31 11.1.3 File 類類 .11.2 文件讀寫(xiě)文件讀寫(xiě)n11.2.1 寫(xiě)文本文件寫(xiě)文本

21、文件n11.2.2 讀文本文件讀文本文件n11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件n11.2.4 讀二進(jìn)制文件讀二進(jìn)制文件n11.2.5 處理壓縮文件處理壓縮文件n11.2.6 對(duì)象序列化對(duì)象序列化.11.2.1 寫(xiě)文本文件寫(xiě)文本文件 n本節(jié)知識(shí)點(diǎn)本節(jié)知識(shí)點(diǎn)類類 創(chuàng)建一個(gè)磁盤(pán)文件創(chuàng)建一個(gè)磁盤(pán)文件 關(guān)閉一個(gè)磁盤(pán)文件關(guān)閉一個(gè)磁盤(pán)文件 write() 方法方法捕獲捕獲I/O異常異常 BufferedWriter 類類.1) 類類(字符輸出流類字符輸出流類)n構(gòu)造方法構(gòu)造方法 fw = new (String );創(chuàng)建字符輸出流類對(duì)象和已存在的文件相關(guān)聯(lián)。創(chuàng)建字符輸出流類對(duì)象和已存在的文件相關(guān)聯(lián)。文件不

22、存在,則創(chuàng)建。文件不存在,則創(chuàng)建。 fw = new (String , boolean append);創(chuàng)建字符輸出流類對(duì)象和已存在的文件相關(guān)聯(lián),創(chuàng)建字符輸出流類對(duì)象和已存在的文件相關(guān)聯(lián),并設(shè)置該該流對(duì)文件的操作是否為續(xù)寫(xiě)并設(shè)置該該流對(duì)文件的操作是否為續(xù)寫(xiě) fw = new (C:demo.txt); fw = new (C:demo.txt,ture); .1) 類類(字符輸出流類字符輸出流類)n主要方法主要方法void write(String str) n寫(xiě)入字符串。寫(xiě)入字符串。viod flush() n刷新該流中的緩沖。刷新該流中的緩沖。viod close() n關(guān)閉此流。關(guān)閉此

23、流。.11.2.1 寫(xiě)文本文件寫(xiě)文本文件【例例】在在C盤(pán)根目錄創(chuàng)建文本文件盤(pán)根目錄創(chuàng)建文本文件Hello.txt,并往里寫(xiě)入若干行文本并往里寫(xiě)入若干行文本public static void main ( String args ) throws IOException String = D:Hello.txt; writer = new ( ); writer.write( Hello!n); writer.write( This is a filen); writer.close(); .n每次運(yùn)行這個(gè)程序,都將刪除已經(jīng)存在每次運(yùn)行這個(gè)程序,都將刪除已經(jīng)存在的的”Hello.txt”文件,

24、創(chuàng)建一個(gè)新的同名文件文件,創(chuàng)建一個(gè)新的同名文件n的構(gòu)造方法有五個(gè),本例是通過(guò)一個(gè)字符串的構(gòu)造方法有五個(gè),本例是通過(guò)一個(gè)字符串指定文件名來(lái)創(chuàng)建指定文件名來(lái)創(chuàng)建n類的類的write方法向文件中寫(xiě)入字符方法向文件中寫(xiě)入字符nclose方法清空流里的內(nèi)容并關(guān)閉它。方法清空流里的內(nèi)容并關(guān)閉它。如果如果不調(diào)用該方法,可能系統(tǒng)還沒(méi)有完成所有數(shù)不調(diào)用該方法,可能系統(tǒng)還沒(méi)有完成所有數(shù)據(jù)的寫(xiě)操作,程序就結(jié)束了據(jù)的寫(xiě)操作,程序就結(jié)束了11.2.1 寫(xiě)文本文件寫(xiě)文本文件-實(shí)例說(shuō)明實(shí)例說(shuō)明.nWriter類的流可實(shí)現(xiàn)內(nèi)部格式到外部磁盤(pán)文類的流可實(shí)現(xiàn)內(nèi)部格式到外部磁盤(pán)文件格式的轉(zhuǎn)換件格式的轉(zhuǎn)換“Hello.txt”是一個(gè)

25、普通的是一個(gè)普通的ASCII碼文本文件,碼文本文件,英文字符占一個(gè)字節(jié),中文字符占兩個(gè)字節(jié)英文字符占一個(gè)字節(jié),中文字符占兩個(gè)字節(jié)Java程序中的字符串則是每個(gè)字符占兩個(gè)字程序中的字符串則是每個(gè)字符占兩個(gè)字節(jié)的,采用節(jié)的,采用Unicode編碼編碼11.2.1 寫(xiě)文本文件寫(xiě)文本文件-實(shí)例說(shuō)明實(shí)例說(shuō)明.public static void main ( String args ) String = D:Hello.txt ; try /將所有IO操作放入try塊中 writer = new ( ,true ); writer.write( Hello!n); writer.write( This

26、is a text filen); writer.close(); catch ( IOException iox) System.out.println(Problem writing + ); .n運(yùn)行此程序,運(yùn)行此程序,會(huì)發(fā)現(xiàn)在原文件內(nèi)容后面又會(huì)發(fā)現(xiàn)在原文件內(nèi)容后面又追加了重復(fù)的內(nèi)容追加了重復(fù)的內(nèi)容,這就是將構(gòu)造方法的這就是將構(gòu)造方法的第二個(gè)參數(shù)設(shè)為第二個(gè)參數(shù)設(shè)為true的效果的效果n如果將文件屬性改為只讀屬性,再運(yùn)行本如果將文件屬性改為只讀屬性,再運(yùn)行本程序,就會(huì)出現(xiàn)程序,就會(huì)出現(xiàn)IO錯(cuò)誤,程序?qū)⑥D(zhuǎn)入錯(cuò)誤,程序?qū)⑥D(zhuǎn)入catch塊中,給出出錯(cuò)信息塊中,給出出錯(cuò)信息4011.2.1 寫(xiě)文本

27、文件寫(xiě)文本文件.n如果需要寫(xiě)入的內(nèi)容很多,就應(yīng)該使用更為高如果需要寫(xiě)入的內(nèi)容很多,就應(yīng)該使用更為高效的效的緩沖器流類緩沖器流類BufferedWritern和和BufferedWriter類都用于輸出字符流,包含類都用于輸出字符流,包含的方法幾乎完全一樣,但的方法幾乎完全一樣,但BufferedWriter多提多提供了一個(gè)供了一個(gè)newLine()方法用于換行方法用于換行不同廠家生產(chǎn)的計(jì)算機(jī)不同廠家生產(chǎn)的計(jì)算機(jī) (IBM, Apple, VAX, Sun) 對(duì)文字的換行方法不同對(duì)文字的換行方法不同。newLine()方法方法可以輸出在當(dāng)前計(jì)算機(jī)上正確的換行符可以輸出在當(dāng)前計(jì)算機(jī)上正確的換行符2

28、) BufferedWriter類類.public static void main ( String args ) throws IOException String = D:newHello.txt ; BufferedWriter out =new BufferedWriter(new ( ); out.write( Hello! ); out.newLine() ; out.write( This is another File); out.close();.11.2.2 讀文本文件讀文本文件 n本節(jié)知識(shí)點(diǎn)本節(jié)知識(shí)點(diǎn)Reader BufferedReader和和readLine() 4

29、3.n類類從文本文件中讀取字符從文本文件中讀取字符繼承自繼承自Reader抽象類的子類抽象類的子類InputStreamReadernBufferedReader讀文本文件的緩沖器類讀文本文件的緩沖器類具有具有readLine()方法方法,可以對(duì)換行符進(jìn)行鑒,可以對(duì)換行符進(jìn)行鑒別,一行一行地讀取輸入流中的內(nèi)容別,一行一行地讀取輸入流中的內(nèi)容繼承自繼承自Reader11.2.2 讀文本文件讀文本文件 .n文件輸入方法:文件輸入方法:BufferedReader in= new BufferedReader( new ( ) ); 11.2.2 讀文本文件讀文本文件 .public static

30、void main (String args) String = D:Hello.txt ; String line; try BufferedReader in = new BufferedReader(new (); line = in.readLine(); while ( line != null ) System.out.println( line ); line = in.readLine(); in.close(); catch ( IOException iox ) System.out.println(Problem +); .n對(duì)象對(duì)象創(chuàng)建后將打開(kāi)文件,創(chuàng)建后將打開(kāi)文件,如

31、果文件不存在,會(huì)拋如果文件不存在,會(huì)拋出一個(gè)出一個(gè)IOExceptionnclose()方法方法為了操作系統(tǒng)可以更為有效地利用有限的資為了操作系統(tǒng)可以更為有效地利用有限的資源,應(yīng)該在讀取完畢后,調(diào)用該方法源,應(yīng)該在讀取完畢后,調(diào)用該方法11.2.2 讀文本文件讀文本文件 .nBufferedReader類的類的readLine()方法方法從一個(gè)面向字符的輸入流中讀取從一個(gè)面向字符的輸入流中讀取一行一行文本。文本。如果其中不再有數(shù)據(jù),返回如果其中不再有數(shù)據(jù),返回nullnReader類的類的read()方法方法也可用來(lái)判別文件結(jié)束。該方法返回的一個(gè)也可用來(lái)判別文件結(jié)束。該方法返回的一個(gè)表示某個(gè)字

32、符的表示某個(gè)字符的int型整數(shù)型整數(shù),如果讀到文件末,如果讀到文件末尾,返回尾,返回 -1。因此可修改本例中讀文件部分因此可修改本例中讀文件部分11.2.2 讀文本文件讀文本文件 int c;while(c=in.read()!= -1) System.out.print(char)c);. 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 n本節(jié)知識(shí)點(diǎn)本節(jié)知識(shí)點(diǎn)二進(jìn)制文件二進(jìn)制文件 OutputStream n nBufferedOutputStream nDataOutputStream.n原則上講,原則上講,所有文件都是由所有文件都是由8位的字節(jié)組成的位的字節(jié)組成的n如果文件字節(jié)中的內(nèi)容應(yīng)被解釋為

33、字符,則如果文件字節(jié)中的內(nèi)容應(yīng)被解釋為字符,則文件被稱為文本文件文件被稱為文本文件;如果被解釋為其它含;如果被解釋為其它含義,則文件被稱為二進(jìn)制文件義,則文件被稱為二進(jìn)制文件n例如文字處理程序,字處理軟件例如文字處理程序,字處理軟件Word產(chǎn)生的產(chǎn)生的doc文件中,數(shù)據(jù)要被解釋為字體、格式、文件中,數(shù)據(jù)要被解釋為字體、格式、圖形和其他非字符信息。因此,這樣的文件圖形和其他非字符信息。因此,這樣的文件是二進(jìn)制文件,不能用是二進(jìn)制文件,不能用Reader流正確讀取流正確讀取 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 .n為什么需要二進(jìn)制文件為什么需要二進(jìn)制文件輸入輸出更快輸入輸出更快比文本文件小很多

34、比文本文件小很多有些數(shù)據(jù)不容易被表示為字符有些數(shù)據(jù)不容易被表示為字符 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 .1) 抽象類抽象類OutputStreamn提供了提供了3個(gè)個(gè)write方法來(lái)做數(shù)據(jù)的輸出方法來(lái)做數(shù)據(jù)的輸出public void write(byte b )將參數(shù)將參數(shù)b中的字節(jié)寫(xiě)到輸出流中的字節(jié)寫(xiě)到輸出流 public void write(byte b , int off, int len) 將將b從偏移量從偏移量off開(kāi)始開(kāi)始len個(gè)字節(jié)寫(xiě)到輸出流個(gè)字節(jié)寫(xiě)到輸出流 public abstract void write(int b)先將先將int轉(zhuǎn)換為轉(zhuǎn)換為byte類型,把低

35、字節(jié)寫(xiě)入輸類型,把低字節(jié)寫(xiě)入輸出流出流.1) 抽象類抽象類OutputStream主要的子類主要的子類.n派生類派生類作用:用來(lái)處理以文件作為數(shù)據(jù)輸出目的數(shù)作用:用來(lái)處理以文件作為數(shù)據(jù)輸出目的數(shù)據(jù)流;或者說(shuō)是從內(nèi)存區(qū)讀數(shù)據(jù)入文件據(jù)流;或者說(shuō)是從內(nèi)存區(qū)讀數(shù)據(jù)入文件 (File file) n創(chuàng)建一個(gè)向指定創(chuàng)建一個(gè)向指定File對(duì)象表示的文件中寫(xiě)對(duì)象表示的文件中寫(xiě)入數(shù)據(jù)的文件輸出流。入數(shù)據(jù)的文件輸出流。 (String name) n創(chuàng)建一個(gè)向具有指定名稱的文件中寫(xiě)入數(shù)創(chuàng)建一個(gè)向具有指定名稱的文件中寫(xiě)入數(shù)據(jù)的輸出文件流。據(jù)的輸出文件流。1) 抽象類抽象類OutputStream.n派生類派生類創(chuàng)建

36、一個(gè)文件流對(duì)象創(chuàng)建一個(gè)文件流對(duì)象: out=new (d:/write.txt ); File (“d:/write.txt ); out= new (f);1) 抽象類抽象類OutputStream使用鍵盤(pán)輸入一段文章,將文章保存在文件使用鍵盤(pán)輸入一段文章,將文章保存在文件write.txt中. public static void main(String args) throws IOException try System.out.println(please Input from Keyboard); int count, n = 512; byte buffer = new byte

37、n; count = System.in.read(buffer); wf = new (d:/write.txt); wf.write(buffer, 0, count); wf.close(); System.out.println(Save to the write.txt); catch (IOException IOe) System.out.println(File Write Error!); .n派生類派生類DataOutputStream數(shù)據(jù)輸出流允許應(yīng)用程序以數(shù)據(jù)輸出流允許應(yīng)用程序以適當(dāng)方式適當(dāng)方式將基本將基本 Java 數(shù)據(jù)類型數(shù)據(jù)類型寫(xiě)入輸出流寫(xiě)入輸出流中。然后應(yīng)用程中

38、。然后應(yīng)用程序可以使用數(shù)據(jù)輸入流將數(shù)據(jù)讀入。序可以使用數(shù)據(jù)輸入流將數(shù)據(jù)讀入。具有寫(xiě)各種基本數(shù)據(jù)類型的方法具有寫(xiě)各種基本數(shù)據(jù)類型的方法將數(shù)據(jù)寫(xiě)到另一個(gè)輸出流將數(shù)據(jù)寫(xiě)到另一個(gè)輸出流在所有計(jì)算機(jī)平臺(tái)上使用同樣的數(shù)據(jù)格式在所有計(jì)算機(jī)平臺(tái)上使用同樣的數(shù)據(jù)格式其中其中size方法,可作為計(jì)數(shù)器,統(tǒng)計(jì)寫(xiě)入的方法,可作為計(jì)數(shù)器,統(tǒng)計(jì)寫(xiě)入的字節(jié)數(shù)字節(jié)數(shù)1) 抽象類抽象類OutputStream.名稱 說(shuō)明 public DataOutputStream(OutputStream out) 構(gòu)造函數(shù),參數(shù)為一個(gè) OutputStream 對(duì)象作為其底層的輸出對(duì)象 protected int written 私有屬

39、性,代表當(dāng)前已寫(xiě)出的字節(jié)數(shù) public void flush() 沖刷此數(shù)據(jù)流,使流內(nèi)的數(shù)據(jù)都被寫(xiě)出 public final int size() 返回私有變量 written 的值,即已經(jīng)寫(xiě)出的字節(jié)數(shù) public void write(int b) 向底層輸出流輸出 int 變量的低八位。執(zhí)行后,記錄寫(xiě)入字節(jié)數(shù)的計(jì)數(shù)器加 1 public final void writeBoolean(boolean b) 寫(xiě)出一個(gè)布爾數(shù),true 為 1,false 為 0,執(zhí)行后計(jì)數(shù)器增加 1 public final void writeByte(int b) 將 int 參數(shù)的低八位寫(xiě)入,舍棄

40、高 24 位,計(jì)數(shù)器增加 1 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 .public void writeBytes(String s) 字符串中的每個(gè)字符被丟掉高八位寫(xiě)入流中,計(jì)數(shù)器增加寫(xiě)入的字節(jié)數(shù),即字符個(gè)數(shù) public final void writeChar(int c) 將 16-bit 字符寫(xiě)入流中,高位在前,計(jì)數(shù)器增加2 public void writeDouble(double v) 寫(xiě)雙精度數(shù),計(jì)數(shù)器增加 8 public void writeFloat(float f) 寫(xiě)單精度數(shù),計(jì)數(shù)器增加 4 public void writeInt(int I) 寫(xiě)整數(shù),計(jì)數(shù)器增

41、加 4 public void writeLong(long l) 寫(xiě)長(zhǎng)整數(shù),計(jì)數(shù)器增加 8 public final void writeShort(int s) 寫(xiě)短整數(shù),計(jì)數(shù)器增加 2 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 .public static void main ( String args ) String = d:/data1.dat ; int value0 =255, value1= 0, value2=-1; try DataOutputStream out = new DataOutputStream( new (); out.writeInt( value0 );

42、 out.writeInt( value1 ); out.writeInt( value2 ); out.close(); catch ( IOException iox ) System.out.println(Problem writing ); .n說(shuō)明說(shuō)明類的構(gòu)造方法負(fù)責(zé)打開(kāi)文件類的構(gòu)造方法負(fù)責(zé)打開(kāi)文件“data1.dat”用于寫(xiě)數(shù)據(jù)用于寫(xiě)數(shù)據(jù)類的對(duì)象與類的對(duì)象與DataOutputStream對(duì)象連接,對(duì)象連接,寫(xiě)基本類型的數(shù)據(jù)寫(xiě)基本類型的數(shù)據(jù) 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 .n運(yùn)行結(jié)果運(yùn)行結(jié)果運(yùn)行程序后,在運(yùn)行程序后,在D盤(pán)生成數(shù)據(jù)文件盤(pán)生成數(shù)據(jù)文件data1.dat用寫(xiě)

43、字板打開(kāi)沒(méi)有任何顯示用寫(xiě)字板打開(kāi)沒(méi)有任何顯示用二進(jìn)制查看器打開(kāi)查看其二進(jìn)制信息,用二進(jìn)制查看器打開(kāi)查看其二進(jìn)制信息,內(nèi)容為內(nèi)容為00 00 00 FF 00 00 00 00 FF FF FF FF,每個(gè),每個(gè)int數(shù)字都是數(shù)字都是32個(gè)個(gè)bit的的 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 .nBufferedOutputStream類類寫(xiě)二進(jìn)制文件的緩沖流類寫(xiě)二進(jìn)制文件的緩沖流類類似于文本文件中的類似于文本文件中的BufferedWriter對(duì)于大量數(shù)據(jù)的寫(xiě)入,可提高效率對(duì)于大量數(shù)據(jù)的寫(xiě)入,可提高效率用法示例:用法示例:DataOutputStream out = new DataOutpu

44、tStream( new BufferedOutputStream( new ( ) ) ); 63 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 . public static void main( String args ) throws IOException String = D:/mixedTypes.dat ; DataOutputStream dataOut = new DataOutputStream( new BufferedOutputStream( new ( ); dataOut.writeInt( 0 ); System.out.println( dataOut.size(

45、) + bytes have been written.); dataOut.writeDouble( 31.2 ); System.out.println( dataOut.size() + bytes have been written.); dataOut.writeBytes(JAVA); System.out.println( dataOut.size() + bytes have been written.); dataOut.flush(); dataOut.close(); .n運(yùn)行結(jié)果運(yùn)行結(jié)果4 bytes have been written12 bytes have bee

46、n written16 bytes have been writtenn說(shuō)明說(shuō)明這個(gè)程序可作為字節(jié)計(jì)數(shù)器這個(gè)程序可作為字節(jié)計(jì)數(shù)器 11.2.3 寫(xiě)二進(jìn)制文件寫(xiě)二進(jìn)制文件 . 11.2.4 讀二進(jìn)制文件讀二進(jìn)制文件 n本節(jié)知識(shí)點(diǎn)本節(jié)知識(shí)點(diǎn)DataInputStreamBufferedInputSteam 讀寫(xiě)整數(shù)讀寫(xiě)整數(shù) 讀寫(xiě)單字節(jié)讀寫(xiě)單字節(jié) .1) 抽象類抽象類InputStreamInputstream類中的常用方法類中的常用方法npublic abstract int read( ):讀取一個(gè):讀取一個(gè)byte的數(shù)的數(shù)據(jù),返回值是高位補(bǔ)據(jù),返回值是高位補(bǔ)0的的int類型值。類型值。npub

47、lic int read(byte b ):讀?。鹤x取b.length個(gè)字節(jié)個(gè)字節(jié)的數(shù)據(jù)放到的數(shù)據(jù)放到b數(shù)組中。返回值是讀取的字節(jié)數(shù)。數(shù)組中。返回值是讀取的字節(jié)數(shù)。npublic int read(byte b , int off, int len):讀取:讀取len個(gè)字節(jié)的數(shù)據(jù),存放到偏移量為個(gè)字節(jié)的數(shù)據(jù),存放到偏移量為off的的b數(shù)組中數(shù)組中npublic long skip(long n):忽略輸入流中的:忽略輸入流中的n個(gè)個(gè)字節(jié),跳過(guò)一些字節(jié)來(lái)讀取字節(jié),跳過(guò)一些字節(jié)來(lái)讀取.n派生類派生類作用:以文件作為數(shù)據(jù)輸入源的數(shù)據(jù)流。或作用:以文件作為數(shù)據(jù)輸入源的數(shù)據(jù)流。或者說(shuō)是打開(kāi)文件,從文件讀

48、數(shù)據(jù)到內(nèi)存的類者說(shuō)是打開(kāi)文件,從文件讀數(shù)據(jù)到內(nèi)存的類(String name) n通過(guò)文件系統(tǒng)中的路徑名通過(guò)文件系統(tǒng)中的路徑名name創(chuàng)建一個(gè)創(chuàng)建一個(gè)對(duì)象。對(duì)象。 (File file) n通過(guò)通過(guò)File對(duì)象創(chuàng)建一個(gè)對(duì)象。允許在把文對(duì)象創(chuàng)建一個(gè)對(duì)象。允許在把文件連接到輸入流之前對(duì)文件做進(jìn)一步分析,件連接到輸入流之前對(duì)文件做進(jìn)一步分析,如修改寫(xiě)入刪除等等如修改寫(xiě)入刪除等等1) 抽象類抽象類InputStream.n派生類派生類使用方法使用方法: File(d:/abc.txt); in=new ( fin); in=new (d: /abc.txt);1) 抽象類抽象類InputStream.

49、1) 抽象類抽象類InputStreamnDataInputStream intread(byte b) intread(byte b, int off, int len) booleanreadBoolean() bytereadByte() charreadChar() doublereadDouble() floatreadFloat() intreadInt() longreadLong() shortreadShort() .public static void main ( String args ) String fName = D:data1.dat; int sum = 0;

50、 try DataInputStream instr = new DataInputStream( new BufferedInputStream( new ( ); sum += instr.readInt(); sum += instr.readInt(); sum += instr.readInt(); System.out.println( The sum is: +sum); instr.close(); catch ( IOException iox ) System.out.println(Problem reading + ); .nreadInt方法可以從輸入流中讀入方法可以

51、從輸入流中讀入4個(gè)字節(jié)并個(gè)字節(jié)并將其當(dāng)作將其當(dāng)作int型數(shù)據(jù)型數(shù)據(jù)n由于知道文件中存儲(chǔ)的是由于知道文件中存儲(chǔ)的是3個(gè)個(gè)int型數(shù)據(jù),所型數(shù)據(jù),所以使用了以使用了3個(gè)讀入語(yǔ)句個(gè)讀入語(yǔ)句n如果不知道數(shù)據(jù)的個(gè)數(shù)該怎么辦呢?因?yàn)槿绻恢罃?shù)據(jù)的個(gè)數(shù)該怎么辦呢?因?yàn)镈ataInputStream的讀入操作如遇到文件結(jié)的讀入操作如遇到文件結(jié)尾就會(huì)拋出尾就會(huì)拋出EOFException異常,所以我們異常,所以我們可以將讀操作放入可以將讀操作放入try塊中塊中 11.2.4 讀二進(jìn)制文件讀二進(jìn)制文件 .public static void main(String args) throws IOExceptio

52、n s=new (d:/Hello.txt); int c; while (c = s.read() != -1) /讀取1字節(jié),結(jié)束返回-1 System.out.write(c); s.close();. public static void main(String args) throws Exception DataOutputStream out= new DataOutputStream( new (D:/trytry.dat); out.writeByte(-1); out.close(); DataInputStream in=new DataInputStream( new

53、(D:/trytry.dat); int a=in.readByte(); System.out.println(Integer.toHexString (a); System.out.println(a); in.skip (-1); /往后一個(gè)位置,以便下面重新讀出 a=in.readUnsignedByte(); System.out.println(Integer.toHexString (a); System.out.println(a); in.close(); 運(yùn)行結(jié)果ffffffff-1ff255.n用二進(jìn)制查看器打開(kāi)用二進(jìn)制查看器打開(kāi)D:/trytry.dat文件,其文件,其

54、內(nèi)容為內(nèi)容為FFn如果用如果用readByte讀入,其高讀入,其高24位都將補(bǔ)位都將補(bǔ)1,所以結(jié)果還是所以結(jié)果還是-1n如果用如果用readUnsignedByte讀入,其高讀入,其高24位位都將補(bǔ)都將補(bǔ)0,結(jié)果就變成了,結(jié)果就變成了255n寫(xiě)的字節(jié)是連續(xù)的,中間沒(méi)有分隔符,所以寫(xiě)的字節(jié)是連續(xù)的,中間沒(méi)有分隔符,所以應(yīng)該記住寫(xiě)的數(shù)據(jù)類型、個(gè)數(shù)等情況,以便應(yīng)該記住寫(xiě)的數(shù)據(jù)類型、個(gè)數(shù)等情況,以便將來(lái)利用將來(lái)利用 11.2.4 讀二進(jìn)制文件讀二進(jìn)制文件 .11.2.5 處理壓縮文件處理壓縮文件n壓縮流類壓縮流類java.util.zip包中提供了一些類,使我們可以包中提供了一些類,使我們可以以以壓縮格式壓縮格式對(duì)流進(jìn)行讀寫(xiě)對(duì)流進(jìn)行讀寫(xiě)它們都繼承自字節(jié)流類它們都繼承自字節(jié)流類OutputStream和和InputStream其中其中GZIPOutputStream和和ZipOutputStream可分別把數(shù)據(jù)壓縮成可分別把數(shù)據(jù)壓縮成GZIP格式和格式和Zip格式格式GZIPInputStream和和ZipInputStream可以分可以分別把壓縮成別把壓縮成GZIP格式或格式或Zip的數(shù)據(jù)解壓縮恢復(fù)的數(shù)據(jù)解壓縮恢復(fù)原狀原狀.11.2.5 處理壓縮文件處理壓縮文件n如果要從如果要從ZIP壓縮管理文件內(nèi)讀取某個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論