常用IO流的使用_第1頁
常用IO流的使用_第2頁
常用IO流的使用_第3頁
常用IO流的使用_第4頁
常用IO流的使用_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java基礎(chǔ)課程IO流的使用1文件IO流的使用運用File類進(jìn)行文件,文件夾操作理解流,標(biāo)準(zhǔn)輸入/輸出流的概念運用和類或和類進(jìn)行文件讀寫操作運用PrintStream/PrintWriter進(jìn)行打印輸出運用ObjectInputStream和ObjectOutputStream進(jìn)行對象持久化操作2文件 3-1什么是文件?文件可認(rèn)為是相關(guān)記錄或特定結(jié)構(gòu)的數(shù)據(jù)集合文件一般存儲在哪里?JAVA程序一般通過什么去訪問文件屬性? JAVA API :java.io.File 類3File類File類可以與文件或目錄進(jìn)行映射,通過File類java應(yīng)用程序可以訪問本地的文件信息, 也可以創(chuàng)建目錄或刪除文件

2、常用方法:canRead/canExecute/canWrite/isHiddenexists: 判斷目標(biāo)文件或目錄是否存在delete: 刪除指定的目標(biāo)文件或目錄getName/getPath: 獲取目標(biāo)文件名或路徑名mkdir/mkdirs: 創(chuàng)建指定的目錄listFiles: 列出目錄下所有內(nèi)容屬性:返回系統(tǒng)默認(rèn)的路徑分隔符4File使用示例File f = new File(“test.txt”); /與當(dāng)前目錄下的test.txt文件進(jìn)行映射if(f.exists() /判斷文件是否存在System.out.println(文件是存在的);if(f.isHidden() System

3、.out.println(隱藏的);System.out.println(大?。?+ f.length();f.delete(); /刪除文件f = new File(abc123);if(! f.exists() /如果目錄不存在,則創(chuàng)建該目錄f.mkdirs(); /該方法必要時連上級目錄一起創(chuàng)建/讀取當(dāng)前文件夾的信息f = new File(.); = f.listFiles();for(: files) if(ff.isFile()System.out.println(文件: + ff.getName();else if(ff.isDirectory() System.out.prin

4、tln(目錄: + ff.getName();5流 3-3Java流的分類字節(jié)流( 8 位) InputStream OutputStream字符流(16 位 Unicode) Reader Writer注:以上幾個類都是抽象類,在使用時要用它們相應(yīng)的派生類6文件的讀寫文本文件的讀寫用讀文本文件/二進(jìn)制文件用寫文本文件/二進(jìn)制文件用BufferedReader讀文本文件用BufferedWriter寫文本文件7文件 3-2 創(chuàng)建一個 ,該文件描述符表示到文件系統(tǒng)中某個實際文件的現(xiàn)有連接。 創(chuàng)建一個向具有指定 name 的文件中寫入數(shù)據(jù)的 輸出文件流;常用構(gòu)造方法: 查看JDKAPI8用引入相關(guān)

5、的類 import java.io.IOException;import java.io.;構(gòu)造一個文件輸入流對象 = new (“text.txt”);9用利用文件輸入流類的方法讀取文本文件的數(shù)據(jù)(); /可讀取的字節(jié)數(shù)(); /讀取文件的數(shù)據(jù) 關(guān)閉文件輸入流對象();10用引入相關(guān)的類import java.io.IOException;import java.io.;構(gòu)造一個文件輸出流對象 fos = new (Text.txt);11用利用文件輸出流的方法寫文本文件String str =好好學(xué)習(xí)Java;byte words = str.getBytes();fos.write(wo

6、rds, 0, words.length); 關(guān)閉文件輸出流fos.flush();fos.close(); 12使用文件流進(jìn)行文件復(fù)制 具體見eclipse13和用來讀取字符文件的便捷類。此類的構(gòu)造方法假定默認(rèn)字符編碼和默認(rèn)字節(jié)緩沖區(qū)大小都是適當(dāng)?shù)摹S脕韺懭胱址募谋憬蓊?。此類的?gòu)造方法假定默認(rèn)字符編碼和默認(rèn)字節(jié)緩沖區(qū)大小都是可接受的。14和沒有增加新的方法,所有方法都繼承自InputStreamReader和OutputStreamReader以及Reader和Writer類的mark(),markSupported(),read(),ready(),reset(),skip()和app

7、end(),close(),flush(),write() 等方法InputStreamReader 是字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認(rèn)的字符集。OutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節(jié)。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺默認(rèn)的字符集。15用BufferedReader讀文本文件引入相關(guān)的類import java.io.;import java.io.BufferedReader;imp

8、ort java.io.IOException;構(gòu)造一個BufferedReader對象 fr=new (mytest.txt); BufferedReader br=new BufferedReader(fr); 16用BufferedReader讀文本文件利用BufferedReader的方法讀取文本文件的數(shù)據(jù) br.readLine(); /讀取一行數(shù)據(jù),返回字符串,不再需要字節(jié)數(shù)組到字符串的轉(zhuǎn)換關(guān)閉相關(guān)的流對象 br.close(); fr.close();17用BufferedWriter寫文本文件引入相關(guān)的類import java.io. ;import java.io.Buffe

9、redWriter ;import java.io.IOException;構(gòu)造一個BufferedWriter對象 fw=new (mytest.txt); BufferedWriter bw=new BufferedWriter(fw);18用BufferedWriter寫文本文件利用BufferedWriter的方法寫文本文件bw.write (“hello”); /直接傳字符串對象,無需再進(jìn)行字符串到字節(jié)數(shù)組的轉(zhuǎn)換 相關(guān)流對象的清空和關(guān)閉bw.flush();fw.close();19I/O 處理(二)對象流的處理20目標(biāo)運用DataInputStream和DataOutputStre

10、am類 讀寫二進(jìn)制文件運用對象流讀寫對象ObjectInputStreamObjectOutputStream21用DataInputStream 讀二進(jìn)制文件引入相關(guān)的類 import java.io.; import java.io.DataInputStream;構(gòu)造一個數(shù)據(jù)輸入流對象 fis = new (“HelloWorld.class”); DataInputStream dis = new DataInputStream(fis);利用數(shù)據(jù)輸入流類的方法讀取二進(jìn)制文件的數(shù)據(jù) dis.readInt(); / 讀取出來的是整數(shù) dis.readByte(); / 讀取出來的數(shù)據(jù)是

11、Byte類型 數(shù)據(jù)輸入流的關(guān)閉 dis.close (); /關(guān)閉數(shù)據(jù)輸入流 22用DataOutputStream 寫二進(jìn)制文件引入相關(guān)的類 import java.io. ; import java.io. DataOutputStream;構(gòu)造一個數(shù)據(jù)輸出流對象 outFile = new (temp.class); DataOutputStream out = new DataOutputStream(outFile);利用文件輸出流類的方法寫二進(jìn)制文件 out.writeByte(1); /把數(shù)據(jù)寫入二進(jìn)制文件 數(shù)據(jù)輸出流的關(guān)閉 out.close();23二進(jìn)制文件讀寫示例try

12、/寫二進(jìn)制文件 fos = new (t.txt);DataOutputStream dos = new DataOutputStream(fos);dos.writeDouble(25.5);dos.writeInt(70);dos.flush();dos.close();/讀二進(jìn)制文件 fis = new (t.txt);DataInputStream dis = new DataInputStream(fis);double d = dis.readDouble();int i = dis.readInt();System.out.println(d= + d + , i= + i);d

13、is.close(); catch(Exception e) e.printStackTrace();對于DataOutputStream和DataInputStream類的操作,讀寫必須按類型按順序進(jìn)行操作24對象流ObjectInputStreamObjectOutputStream步驟:先構(gòu)建基礎(chǔ)流再封裝對象流注:被序列化的對象一定要實現(xiàn)java.io. Serializable接口,被序列化的對象可以結(jié)合集合容器對象一起使用,把一個集合對象序列化之后,該集合對象中的所有的元素也會一起被序列化25對象流的作用當(dāng)兩個進(jìn)程在進(jìn)行遠(yuǎn)程通信時,彼此可以發(fā)送各種類型的數(shù)據(jù)。無論是何種類型的數(shù)據(jù),都

14、會以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳送。發(fā)送方需要把這個Java對象轉(zhuǎn)換為字節(jié)序列,才能在網(wǎng)絡(luò)上傳送;接收方則需要把字節(jié)序列再恢復(fù)為Java對象。把Java對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化。把字節(jié)序列恢復(fù)為Java對象的過程稱為對象的反序列化。對象的序列化主要有兩種用途:1) 把對象的字節(jié)序列永久地保存到硬盤上,通常存放在一個文件中;2) 在網(wǎng)絡(luò)上傳送對象的字節(jié)序列。26對象流的讀寫引入相關(guān)的類 import java.io. ; import java.io. ObjectOutputStream;構(gòu)造一個數(shù)據(jù)輸出流對象 outFile = new (“obj.dat); ObjectOutputStream oos= new ObjectOutputStream (outFile);利用文件輸出流類的方法寫二進(jìn)制文件 OOS.writeObject(obj); /把數(shù)據(jù)寫入二進(jìn)制文件 數(shù)據(jù)輸出流的關(guān)閉 oos.flush();/清空緩沖區(qū)數(shù)據(jù) oos.close();27對象流的讀寫引入相關(guān)的類 import jav

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論