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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、(), nextLine(),nextLong(), nextShort(), next(), nextBoolean() 。 上述方法執(zhí)行時都會堵塞,等待你在命令行輸入數據回車確認。 編程提示:輸入提示(Demo2_4.java),9.1 文件,舉例:FileDemo.java和FileDemob.java 1.常用構造方法: 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() 判斷文件是否是一個正常文件,而不是目錄。 public boolean isDir

4、ectroy() 判斷文件是否是一個目錄。 public boolean isHidden() 判斷文件是否是隱藏文件。 public long lastModified() 獲取文件最后修改的時間(時間是從1970年午夜至文件最后修改時刻的毫秒數,9.1 文件,3創(chuàng)建刪除目錄和文件 舉例:FileDemo1.java和FileDemo1b.java public boolean mkdir():創(chuàng)建一個目錄,如果創(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運行可執(zhí)行文件 舉例:Example9_2.j

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

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

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

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

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

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

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

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

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

15、ByteArrayInputStream(byte buf,int offset,int length): public int read():讀出一個字節(jié); 數組字節(jié)流讀寫操作不會發(fā)生IOException異常。,3字符數組流(自看),CharArrayReader CharArrayWriter 字符數組流分別使用字符數組作為流的源和目標。 與數組字節(jié)流不同的是,數組字符流的讀操作可能發(fā)生IOException異常。 例子7:Example9_7.java,返回,9.7 字符串流(自看),StringReader和StringWriter 使用字符串作為流的源。 構造方法: 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、輸出流調用 public String toString() 方法,可以返回輸出流寫入到緩沖區(qū)的全部字符 調用 public void flush() 方法可以刷新緩沖區(qū)。,返回,9.8 數據流,DataInputStream、DataOutputStream 1構造方法 (1)DataInputStream(InputStream in) (2)DataOutputStream(OutnputStream out) 舉例:Example9_8.java,返回,9.9 對象流與序列化,ObjectInputStream類和ObjectOutputStream類 1.構造方法分別是: Objec

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論