2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(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、第6章 文件操作,本章主要內(nèi)容:數(shù)據(jù)流與File類隨機(jī)訪問(wèn)類的應(yīng)用文件操作的應(yīng)用,第6章文件操作,6.1 File類與數(shù)據(jù)流6.2 數(shù)據(jù)流成分6.3 隨機(jī)訪問(wèn)類6.4 文件的操作,6.1 File類與數(shù)據(jù)流,6.1.1 數(shù)據(jù)流6.1.2 File類,,6.1.1 數(shù)據(jù)流,使用數(shù)據(jù)流可以讀文件或?qū)懳募?。所謂流,是一個(gè)生產(chǎn)或消費(fèi)信息的邏輯實(shí)體,通過(guò)輸入/輸出系統(tǒng)與物理設(shè)備相連。雖然與之相連的物理設(shè)備各不相同,但所有的流都以同樣

2、的方式運(yùn)轉(zhuǎn)。按照數(shù)據(jù)流動(dòng)方向,可將數(shù)據(jù)流分為輸入流和輸出流,輸入流只能讀文件不能寫文件,輸出流只能寫文件不能讀文件。,,6.1.2 File類,File類直接處理文件和文件系統(tǒng)。使用File類,可以訪問(wèn)文件屬性信息,但不提供讀/寫文件的方法。 File還瀏覽子目錄層次結(jié)構(gòu),可以用來(lái)生成File對(duì)象的構(gòu)造函數(shù)有如下3個(gè)。(1)File(String directoryPath):通過(guò)全路徑——路徑文件名來(lái)創(chuàng)建對(duì)象,路徑可以是絕對(duì)路徑

3、也可以是相對(duì)路徑。(2)File(String directoryPath, String filename):通過(guò)父目錄和文件名來(lái)創(chuàng)建對(duì)象,filename是不含路徑的文件名。(3)File(File f, String filename):也是通過(guò)父目錄和文件名來(lái)創(chuàng)建對(duì)象,但父目錄由一個(gè)File對(duì)象提供。其中,filename是文件名,directoryPath是文件的路徑名,f是一個(gè)指定目錄的文件對(duì)象。,File定義了很多獲

4、取 File對(duì)象標(biāo)準(zhǔn)屬性的方法。其實(shí)用方法如下。1)屬性操作(1)public String getName():獲取文件名(2)public String getPath():獲取文件路徑(3)public String getAbsolutePath():獲取文件絕對(duì)路徑(4)public long length():獲取文件的長(zhǎng)度(單位是字節(jié))(5)public String getParent():獲取文

5、件的父目錄(6)public File getParentFile():獲取文件父目錄中的文件(7)public long lastModified():獲取文件最后修改時(shí)間(8)public boolean canRead():判斷文件是否是可讀的(9)public boolean canWrite():判斷文件是否可被寫入(10)public boolean exits():判斷文件是否存在(11)public

6、 boolean isFile():判斷是不是一個(gè)正常文件(12)public boolean isDirectroy():判斷是不是一個(gè)目錄(13)public boolean isHidden():判斷文件是不是隱藏文件,6.1.2 File類,2)文件操作(1)public boolean renameTo(File dest):給文件換名(2)public boolean delete():刪除文件3)

7、目錄操作(1)public boolean mkdir():創(chuàng)建目錄(2)public String[] list():以字符串形式列出目錄(3)public File[] listFiles():以File對(duì)象形式列出目錄,6.1.2 File類,6.2 數(shù)據(jù)流成分,6.2.1 字節(jié)流6.2.2 字符流6.2.3 數(shù)據(jù)流6.2.4 對(duì)象流,,6.2.1 字節(jié)流,字節(jié)流類為處理字節(jié)式輸入/輸入提供了豐富的環(huán)境,其

8、處理單元為1個(gè)字節(jié),操作字節(jié)和字節(jié)數(shù)組。一個(gè)字節(jié)流可以和其他任何類型的對(duì)象并用,包括二進(jìn)制數(shù)據(jù),這樣的多功能性使得字節(jié)流對(duì)很多類型的程序都很重要。字節(jié)流有兩個(gè)超類,也是兩個(gè)抽象類,分別是字節(jié)輸入流(InputStream)和字節(jié)輸出流(OutputStream)。,1.InputStream類該類是所有字節(jié)輸入流的超類,是一個(gè)定義了流式字節(jié)輸入模式的抽象類,該類的所有方法在出錯(cuò)條件下引發(fā)一個(gè)IOException異常。2.Out

9、putStream類OutputStream類是所有字節(jié)輸出流的超類,是定義了流式字節(jié)輸出模式的抽象類,該類的所有方法返回一個(gè)void值并且在出錯(cuò)情況下引發(fā)一個(gè)IOException異常。,6.2.1 字節(jié)流,6.2.2 字符流,字節(jié)流可以讀/寫文件,但字節(jié)流的處理單元為1個(gè)字節(jié),對(duì)于占用2個(gè)字節(jié)以上的字符,如漢字(在文件中占用2個(gè)字節(jié)),如果使用字節(jié)流讀寫文件會(huì)出現(xiàn)亂碼現(xiàn)象,所以JSP中提供了字符流。字符流處理的單元為2個(gè)字節(jié)的Un

10、icode 字符,提供了處理任何類型輸入/輸出操作的足夠的功能,在Unicode字符集中,一個(gè)漢字被看作一個(gè)字符,采用字符流就可以避免亂碼.字符流有兩個(gè)超類,也是兩個(gè)抽象類,分別為字符輸入流(Reader)和字符輸出流(Writer)。,1.Reader類Reader類是所有字符輸入流的父類,也是定義Java的流式字符輸入模式的抽象類,該類的所有方法在出錯(cuò)情況下都將引發(fā)IOException 異常。2.Writer類Write

11、r類是所有字符輸出流的父類,是定義流式字符輸出的抽象類,所有該類的方法都返回一個(gè)void值,并在出錯(cuò)條件下引發(fā)IOException 異常。,6.2.2 字符流,6.2.3 數(shù)據(jù)流,前面的字符流只能對(duì)文件進(jìn)行字符類型的數(shù)據(jù)讀寫,字節(jié)流只能對(duì)文件進(jìn)行字節(jié)類型的數(shù)據(jù)讀寫,只有數(shù)據(jù)流才能對(duì)文件進(jìn)行各種數(shù)據(jù)類型(java基本類型數(shù)據(jù))進(jìn)行讀寫。數(shù)據(jù)流包括數(shù)據(jù)輸入流(DataInputStream)和數(shù)據(jù)輸出流(DataOutputStream

12、)。1.?dāng)?shù)據(jù)流的構(gòu)造方法(1)數(shù)據(jù)輸入流的構(gòu)造方法:public DatalnputStream(InputStream in)。(2)數(shù)據(jù)輸出流的構(gòu)造方法:public DataOutputStream(OutputStream out)。 其中,in是輸入流對(duì)象,out是輸出流對(duì)象。,2.?dāng)?shù)據(jù)流的常用方法1)數(shù)據(jù)輸入流常用方法(1)close():關(guān)閉流。(2)readBoolean():讀取一個(gè)布爾值。(3)r

13、eadByte():讀取一個(gè)字節(jié)。(4)readChar():讀取一個(gè)字符。(5)readDouble():讀取一個(gè)雙精度浮點(diǎn)值。(6)readFloat():讀取一個(gè)單精度浮點(diǎn)值。(7)readInt():從文件中讀取一個(gè)int值。(8)readLong():讀取一個(gè)長(zhǎng)型值。(9)readShort():讀取一個(gè)短型值。(10)readUnsignedByte():讀取一個(gè)無(wú)符號(hào)字節(jié)。(11)readUnsignedS

14、hort():讀取一個(gè)無(wú)符號(hào)短型值。(12)readUTF():讀取一個(gè)UTF字符串。,6.2.3 數(shù)據(jù)流,2)數(shù)據(jù)輸出流常用方法(1)close():關(guān)閉流(2)writeBoolean(boolean v):把一個(gè)布爾值作為單字節(jié)值寫入。(3)writeBytes(String s):寫入一個(gè)字符串。(4)writeChar(String s):寫入字符串。(5)writeDouble(double v):寫入一個(gè)雙精度

15、浮點(diǎn)值。(6)writeFloat(float v):寫入一個(gè)單精度浮點(diǎn)值。(7)writeInt(int v):寫入一個(gè)int值。(8)writeLong(long v):寫入一個(gè)長(zhǎng)型值。(9)writeShort(int v):寫入一個(gè)短型值。(10)writeUTF(String s):寫入一個(gè)UTF字符串。,6.2.3 數(shù)據(jù)流,3.流鏈在實(shí)際應(yīng)用中,利用各種流的特點(diǎn),將多個(gè)流套接在一起可構(gòu)成一個(gè)流鏈。程序通過(guò)輸入流鏈

16、讀取數(shù)據(jù)源點(diǎn)數(shù)據(jù),通過(guò)輸出流鏈向數(shù)據(jù)終點(diǎn)寫數(shù)據(jù)。這里的數(shù)據(jù)源點(diǎn)和數(shù)據(jù)終點(diǎn)一般指文件或內(nèi)存。下面介紹輸入流管道模型和輸出流管道模型。1)輸入流鏈輸入管道有3 種型號(hào),分別為1號(hào)(FileInputStream)2號(hào)(BufferedInputStream)3號(hào)(DataInputStream)每種管道代表一種流,將它們進(jìn)行管道套接后,可以組成4種輸入流鏈,用戶可以選擇其中的任意一種流鏈,從數(shù)據(jù)源點(diǎn)讀取數(shù)據(jù)。,6.2.3 數(shù)據(jù)流

17、,2)輸出流鏈輸出管道也有3 種型號(hào),分別為1號(hào)(FileOutputStream)2號(hào)(BufferedOutputStream)3號(hào)(DataOutputStream)每種管道代表一種流,將它們進(jìn)行管道套接后,同樣可以組成4種輸出流鏈,用戶可以選擇其中的任意一種流鏈,向數(shù)據(jù)終點(diǎn)寫入數(shù)據(jù)。,6.2.3 數(shù)據(jù)流,6.2.4 對(duì)象流,使用對(duì)象流可以直接把對(duì)象寫入文件,也可以直接從文件中讀取一個(gè)對(duì)象。對(duì)象流分為對(duì)象輸入流(0bje

18、ctInputStream)和對(duì)象輸出流(ObjectOutputStream)。1.對(duì)象流的構(gòu)造方法 (1)對(duì)象輸入流的構(gòu)造方法:public objectInputStream(InputStream in) throws IOException。(2)對(duì)象輸出流的構(gòu)造方法:public ObjectOutputStream(OutputStream out) throws IOException。2.對(duì)象流的實(shí)例方

19、法(1)對(duì)象輸入流的實(shí)例方法:public final Object readObject() throws OptionalDataException , ClassNotFoundException , IOException。(2)對(duì)象輸出流的實(shí)例方法:public final void writeObject(Object obj) throws IOException。,6.3 隨機(jī)訪問(wèn)類,6.3.1 構(gòu)造方法6

20、.3.2 實(shí)例方法,6.3.1 構(gòu)造方法,隨機(jī)訪問(wèn)類RandomAccessFile的構(gòu)造方法如下:public RandomAccessFile(File file,String mode)throws FileNotFoundExceptionpublic RandomAccessFile(String name,String mode)throws FileNotFoundException其中,name表示文件名, fil

21、e表示文件對(duì)象,mode指定對(duì)文件的訪問(wèn)模式,r表示讀,w表示寫,rw表示讀/寫,當(dāng)文件不存在時(shí),構(gòu)造方法將拋出FileNotFoundException異常。,6.3.2 實(shí)例方法,隨機(jī)訪問(wèn)類RandomAccessFile的常用方法如表6-1所示。,6.3.2 實(shí)例方法,6.4 文件的操作,6.4.1 文件上傳6.4.2 文件下載6.4.3 文件的分頁(yè)顯示6.4.4 創(chuàng)建和刪除目錄,6.4.1 文件上傳,文件上傳是指由JSP獲

22、得客戶端發(fā)出的輸入流,再?gòu)倪@個(gè)輸入流中讀取指定的文件,然后把文件保存到指定的位置。,6.4.2 文件下載,文件下載是指直接下載網(wǎng)上指定的文件。要下載服務(wù)器上的文件,首先通過(guò)輸入流把文件讀到緩沖區(qū)中,然后把緩沖區(qū)中的數(shù)據(jù)寫到getOutputStream()方法所指向的客戶端。,當(dāng)要讀取一個(gè)較大的文件時(shí),比如,客戶在網(wǎng)上讀一部小說(shuō),就要采用分頁(yè)讀取文件。在JSP中可采用session對(duì)象,實(shí)現(xiàn)文件的分頁(yè)讀取。,6.4.3 文件的分頁(yè)顯示

溫馨提示

  • 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ù)僅提供信息存儲(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)論