第9章(2學(xué)時(shí)).ppt_第1頁
第9章(2學(xué)時(shí)).ppt_第2頁
第9章(2學(xué)時(shí)).ppt_第3頁
第9章(2學(xué)時(shí)).ppt_第4頁
第9章(2學(xué)時(shí)).ppt_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第九章 輸入、輸出流,本章導(dǎo)讀 1. 文件 2. 文件字節(jié)流 3. 文件字符流 4. 從鍵盤讀取數(shù)據(jù) 5緩沖流 6數(shù)組流,7字符串流 8數(shù)據(jù)流 9管道流 10對象流 11.序列化與對象克隆 12. 隨機(jī)讀寫流 13. 文件鎖,2.4 數(shù)據(jù)的輸入:Scanner類,1.Printf的使用 2數(shù)據(jù)的輸入:Scanner Scanner是SDK1.5新增的一個(gè)類. import java.util. Scanner; Scanner reader1=new Scanner(System.in); 常用方法: nextByte(), nextDouble(), nextFloat(), nextInt

2、(), nextLine(),nextLong(), nextShort(), next(), nextBoolean() 。 上述方法執(zhí)行時(shí)都會(huì)堵塞,等待你在命令行輸入數(shù)據(jù)回車確認(rèn)。 編程提示:輸入提示(Demo2_4.java),9.1 文件,舉例:FileDemo.java和FileDemob.java 1.常用構(gòu)造方法: File(String filename); File(String directoryPath,String filename); File(File f, String filename);,9.1 文件,2文件的屬性 public String getName(

3、) 獲取文件的名字。 public boolean canRead() 判斷文件是否是可讀的。 public boolean canWrite() 判斷文件是否可被寫入。 public boolean exits() 判斷文件是否存在。 public long length() 獲取文件的長度(單位是字節(jié))。 public String getAbsolutePath() 獲取文件的絕對路徑。 public String getParent() 獲取文件的父目錄。 public boolean isFile() 判斷文件是否是一個(gè)正常文件,而不是目錄。 public boolean isDir

4、ectroy() 判斷文件是否是一個(gè)目錄。 public boolean isHidden() 判斷文件是否是隱藏文件。 public long lastModified() 獲取文件最后修改的時(shí)間(時(shí)間是從1970年午夜至文件最后修改時(shí)刻的毫秒數(shù),9.1 文件,3創(chuàng)建刪除目錄和文件 舉例:FileDemo1.java和FileDemo1b.java public boolean mkdir():創(chuàng)建一個(gè)目錄,如果創(chuàng)建成功返回true,否則返回false。 public boolean createNewFile() public boolean delete() 可以刪除目錄和文件,9.1

5、文件,4. 列出目錄中的文件 public String list() 用字符串形式返回目錄下的全部文件. public File listFiles() 用File對象形式返回目錄下的全部文件。 public String list(FilenameFilter obj) 該方法用字符串形式返回目錄下的指定類型的所有文件。 public File listFiles(FilenameFilter obj) 該方法用File對象返回目錄下的指定類型所有文件。 舉例:Example9_1.java, Example9_1b.java,9.1 文件,5運(yùn)行可執(zhí)行文件 舉例:Example9_2.j

6、ava 首先使用java.lang.Runtime 類聲明一個(gè)對象,如: Runtime ec; 然后使用靜態(tài)getRuntime()方法創(chuàng)建這個(gè)對象: ec=Runtime.getRuntime(); ec可以調(diào)用exec(String command)方法打開本地機(jī)的可執(zhí)行文件或執(zhí)行一個(gè)操作。,返回,補(bǔ): 輸入輸出流簡介,Java將設(shè)備間的數(shù)據(jù)流動(dòng)抽象化為一個(gè)流,其中流動(dòng)的是字節(jié)數(shù)據(jù)。 流(Stream)分為輸入流和輸出流: 輸入流是從外部設(shè)備向計(jì)算機(jī)程序流動(dòng)的數(shù)據(jù)序列,程序?qū)斎肓鬟M(jìn)行讀操作; 輸出流是從計(jì)算機(jī)程序向外部設(shè)備流動(dòng)的數(shù)據(jù)序列,程序?qū)敵隽鬟M(jìn)行寫操作。,輸入輸出流簡介,jav

7、a.io包中的類分為兩部分: 字節(jié)輸入輸出流(Byte Streams) 字符輸入輸出流(Character Streams) 1.字節(jié)輸入輸出流 字節(jié)流用來讀寫8位的字節(jié)數(shù)據(jù),InputStream類和OutputStream類是所有字節(jié)輸入輸出流類的父類,InputStream類和OutputStream類是抽象類。,輸入輸出流簡介,InputStream類其派生的子類:,輸入輸出流簡介,OutputStream類派生的子類:,輸入輸出流簡介,2.字符輸入輸出流 字符輸入輸出流的兩個(gè)超類是Reader類和Writer類。Reader類提供讀取16位字符數(shù)據(jù)的相關(guān)方法,Writer提供了對1

8、6位字符數(shù)據(jù)進(jìn)行寫操作的各種方法。 Reader類和Writer類都是抽象類,不能用來創(chuàng)建對象,只能使用它們的派生類進(jìn)行字符流的讀寫。,輸入輸出流簡介,Reader類的子類:,輸入輸出流簡介,Writer類常用的派生類 :,9.2 文件字節(jié)流,舉例:TestFileInputStream.java,Example9_3.java 1FileInputStream類 常用構(gòu)造方法: FileInputStream(String name)throws FileNotFoundException FileInputStream(File file) throws FileNotFoundExcep

9、tion 讀方法: int read() throws IOException : 從輸入流中順序讀取單個(gè)字節(jié)的數(shù)據(jù)。該方法返回字節(jié)值(0255之間的一個(gè)整數(shù)),讀取位置到達(dá)文件末尾,則返回-1。 int read(byte b ) int read(byte b , int off, int len):其中,off參數(shù)指定read方法把數(shù)據(jù)存放在字節(jié)數(shù)組b中的位置,len參數(shù)指定該方法將讀取的最大字節(jié)數(shù)。上面所示的這兩個(gè)read方法都返回實(shí)際讀取的字節(jié)個(gè)數(shù)。,9.2 文件字節(jié)流,2FileOutputStream類 例:TestFileOutputStream.java 常用構(gòu)造方法: Fi

10、leOutputStream(String name) FileOutputStream(File file) 寫方法: public void write(byte b) throws IOException:寫b.length個(gè)字節(jié)到輸出流。 public void write(byte b,int off,int len):從給定字節(jié)數(shù)組中起始于偏移量off處寫len個(gè)字節(jié)到輸出流,參數(shù)b是存放了數(shù)據(jù)的字節(jié)數(shù)組。,返回,9.2 文件字節(jié)流,3.讀寫文件的步驟: 打開文件并指明讀寫方式 使用對應(yīng)的寫入方法 使用對應(yīng)的讀出方法 關(guān)閉文件,9.3 文件字符流,舉例:修改上例,或看Example

11、9_4.java 1FileReader類 使用下列構(gòu)造方法: FileReader(String name) FileReader (File file) 讀方法 int read() 輸入流調(diào)用該方法從源中讀取一個(gè)字符,該方法返回一個(gè)整數(shù)(065535之間的一個(gè)整數(shù),Unicode字符值),如果未讀出字符就返回-1。 int read(char b ) int read(char b , int off, int len),2FileWriter類,構(gòu)造方法: FileWriter(String name) FileWriter (File file) 寫方法: public void w

12、rite(char b) 寫b.length個(gè)字符到輸出流。 public void write(char b,int off,int len) 從給定字符數(shù)組中起始于偏移量off處寫len個(gè)字符到輸出流。 void write(String str) 把字符串中的全部字符寫入到輸出流。 void write(String str,int off,int len) 從字符串str中起始于偏移量off處寫len個(gè)字符到輸出流。,9.5 緩沖流,1BufferedReader類 舉例:Example9_5和Example9_5b 構(gòu)造方法: BufferedReader(Reader in) 通過

13、向BufferedReader傳遞一個(gè)Reader對象(如FileReader的實(shí)例),來創(chuàng)建一個(gè)BufferedReader對象. 讀方法: readLine(),9.5 緩沖流,2BufferedWriter類 構(gòu)造方法: FileWriter tofile=new FileWriter(hello.txt); BufferedWriter out=new BufferedWriter(tofile); 寫方法: write(String str) write(String s,int off,int len) 把字符串s或s的一部分寫入到目的地。 調(diào)用flush()清空緩沖區(qū).,復(fù)習(xí),S

14、canner類 File類 字節(jié)流和字符流 輸入流和輸出流 套接流 作業(yè)題解答,9.6 數(shù)組流,舉例:Example9_6.java 1.ByteArrayOutputStream 構(gòu)造方法: ByteArrayOutputStream(): ByteArrayOutputStream(int size): public void write(int b):將字節(jié)寫入字節(jié)數(shù)組輸出流; public byte toByteArray():返回字節(jié)數(shù)組(緩沖區(qū))的全部字節(jié)。,2. ByteArrayInputStream 構(gòu)造方法: ByteArrayInputStream(byte buf):

15、ByteArrayInputStream(byte buf,int offset,int length): public int read():讀出一個(gè)字節(jié); 數(shù)組字節(jié)流讀寫操作不會(huì)發(fā)生IOException異常。,3字符數(shù)組流(自看),CharArrayReader CharArrayWriter 字符數(shù)組流分別使用字符數(shù)組作為流的源和目標(biāo)。 與數(shù)組字節(jié)流不同的是,數(shù)組字符流的讀操作可能發(fā)生IOException異常。 例子7:Example9_7.java,返回,9.7 字符串流(自看),StringReader和StringWriter 使用字符串作為流的源。 構(gòu)造方法: public

16、StringReader(String s) public StringWriter() public StringWriter(int size) 讀寫方法: public int read() public int read(char buf,int off,int len),9.7 字符串流(自看),public void write(int b) public void write(char b,int off,int len) public void write(String str) public void write(String str,int off,int len) 字符串

17、輸出流調(diào)用 public String toString() 方法,可以返回輸出流寫入到緩沖區(qū)的全部字符 調(diào)用 public void flush() 方法可以刷新緩沖區(qū)。,返回,9.8 數(shù)據(jù)流,DataInputStream、DataOutputStream 1構(gòu)造方法 (1)DataInputStream(InputStream in) (2)DataOutputStream(OutnputStream out) 舉例:Example9_8.java,返回,9.9 對象流與序列化,ObjectInputStream類和ObjectOutputStream類 1.構(gòu)造方法分別是: Objec

18、tInputStream(InputStream in) ObjectOutputStream(OutputStream out) 2.讀寫對象的方法: writeObject(Object obj):(見API) readObject(),9.9 對象流與序列化,當(dāng)使用對象流寫入或讀入對象時(shí),要保證對象是序列化的(即實(shí)現(xiàn)Serializable接口),而且該對象的成員對象也必須是序列化的。 舉例:例Example9_9.java,返回,9.11 序列化與對象克?。ㄗ钥矗?對象調(diào)用clone()方法可以獲得對象的復(fù)制品,稱為原對象的克隆對象. 該復(fù)制品的實(shí)體是原對象實(shí)體的一個(gè)拷貝,復(fù)制品實(shí)體的

19、變化不會(huì)影響到原對象實(shí)體的變化. 但若原對象有引用型成員變量,情況會(huì)復(fù)雜些:克隆對象對應(yīng)的成員變量的引用就與原對象那個(gè)成員變量的引用相同. 舉例:Point.java;Table.java;CloneDemo.java 使用對象流可以很方便獲取一個(gè)序列化對象的克隆。 舉例:Point1.java;Table2.java; ObjectClone.java 或:Example9_10.java,返回,9.12 隨機(jī)讀寫流,RandomAccessFile類的兩個(gè)構(gòu)造方法: (1)RandomAccessFile(String name,String mode) 參數(shù)name 用來確定一個(gè)文件名,給出創(chuàng)建的流的源,也是流目的地。參數(shù)mode取r(只讀)或rw(可讀寫),決定創(chuàng)建的流對文件的訪問權(quán)利。 (2)RandomAccessFile(File file,String mode): 參數(shù)file 是一個(gè)File對象,給出創(chuàng)建的流的源,也是流目的地。 其它方法: RandomAccessFile類中有一個(gè)seek(long a)方法,用來移動(dòng)RandomAccessFile流的讀寫位置,其中參數(shù)a確定讀寫位置距離文件開頭的字節(jié)位置. 使用getFilePo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論