Java 自學(xué)課件- 二進(jìn)制IO.ppt_第1頁
Java 自學(xué)課件- 二進(jìn)制IO.ppt_第2頁
Java 自學(xué)課件- 二進(jìn)制IO.ppt_第3頁
Java 自學(xué)課件- 二進(jìn)制IO.ppt_第4頁
Java 自學(xué)課件- 二進(jìn)制IO.ppt_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Java程序設(shè)計(jì),第18章 二進(jìn)制I/O,學(xué)習(xí)目標(biāo),理解輸入和輸出流 理解字節(jié)流和字符流 掌握使用文件流讀寫文件 掌握緩沖流 了解數(shù)據(jù)流 掌握對(duì)象流和對(duì)象序列化 了解RandomAccessFile,輸入輸出,java.io包以流(stream)定義輸入/輸出。 java.io包中的流主要分為 字節(jié)流:以8位字節(jié)形式讀寫(InputStream/OutputStream) 字符流:以16位字符形式讀寫(Reader/Writer)。,信息源,程序 (讀),或Reader,目的地,程序 (寫),InputStream,OutputStream,或Writer,字節(jié)流,InputStream,Fi

2、leInputStream,PipedInputStream,FilterInputStream,ByteArrayInputStream,SequenceInputStream,DataInputStream,BufferedInputStream,OutputStream,ObjectInputStream,FileOutputStream,PipedOutputStream,FilterOutputStream,ByteArrayOutputStream,ObjectOutputStream,BufferedOutputStream,PrintStream,PushbackInputSt

3、ream,DataOutputStream,InputStream,public int read() public int read(byte b) public int read(byte b, int offset, int length) public int available() public long skip(long n) public boolean markSupported() public void mark(int readlimit) public void reset() public void close(),Example:CountBytes.java,O

4、utputStream,public void write(int b) public void write(byte b) public void write(byte b, int offset, int length) public void flush() throws IOException public void close() throws IOException,Example:CopyBytes.java,字符流,Reader,BufferedReader,CharArrayReader,InputStreamReader,FilterReader,PipedReader,S

5、tringReader,LineNumberReader,FileReader,PushbackReader,Writer,BufferedWriter,CharArrayWriter,OutputStreamWriter,FilterWriter,PipedWriter,StringWriter,FileWriter,PrintWriter,Reader,public int read() public int read(char buf) public int read(char buf, int offset, int length) public boolean ready() pub

6、lic long skip(long n) public boolean markSupported() public void mark(int readAheadLimit) public void reset() public abstract void close(),Example:CountSpace.java,Writer,public void write(int c) public void write(char buf) public void write(char buf, int offset, int length) public void write(String

7、str) public void write(String str, int offset, int length) public Writer append(CharSequence csq) public Writer append(CharSequence csq, int start, int end) public Writer append(char c) public abstract void flush() public abstract void close(),Example:Copy.java,流類匯總,文件流,文件流用于讀寫磁盤文件。 FileInputStream

8、FileOutputStream FileReader FileWriter 構(gòu)造函數(shù) public stream(String fileName) public stream(File file) 當(dāng)讀文件不存在時(shí),會(huì)產(chǎn)生java.io.FileNotFoundException異常 當(dāng)寫文件不存在時(shí),會(huì)創(chuàng)建一個(gè)新文件。如果文件存在,可以指定是否追加,Example:TestFileReader.java, TestFileWriter.java,InputStreamReader和OutputStreamWriter,InputStreamReader和OutputStreamWriter

9、用于字節(jié)流和字符流之間的轉(zhuǎn)換。 InputStreamReader public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, Charset c) 從底層InputStream讀取的字節(jié),按指定的編碼格式轉(zhuǎn)換成字符。 OutputStreamWriter public OutputStreamWriter(OutputStream out) public OutputStreamWriter(OutputStream out, Charset c) 寫入OutputStreamWriter

10、的字符使用指定的編碼格式轉(zhuǎn)換成字節(jié),再寫入底層的OutputStream。,緩沖流,緩沖流對(duì)底層數(shù)據(jù)進(jìn)行緩沖,減少文件訪問次數(shù)。 構(gòu)造函數(shù) BufferedInputStream(InputStream in) BufferedInputStream(InputStream in, int size) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out , int size) BufferedReader(Reader in) BufferedReader(Reader in , int si

11、ze) BufferedWriter(Writer out) BufferedWriter(Writer out , int size) 方法 BufferedReader的readLine方法,用于讀取一行文本,如果到達(dá)文件結(jié)尾,readLine返回null。 BufferedWriter的newLine方法用于寫入一個(gè)換行符。,例 在文本區(qū)顯示文件,編寫程序,在TextArea中顯示文件的內(nèi)容。,Example:FileViewer.java,JFileChooser,文件選擇對(duì)話框用于從文件系統(tǒng)中選擇文件名稱。,Example:TextEditor.java,數(shù)據(jù)字節(jié)流,以不依賴于機(jī)器的

12、方式對(duì)基本數(shù)據(jù)類型和字符串進(jìn)行讀寫。,Example:TestDataStream.java,對(duì)象串行化,串行化(serialization)是將一個(gè)對(duì)象轉(zhuǎn)化為字節(jié)流的過程。 只有對(duì)象的類實(shí)現(xiàn)了Serializable接口,才能被串行化。 public class MyClass implements Serializable ObjectOutputStream自動(dòng)寫出: 對(duì)象的類。 類的簽名。 所有非transient和非static成員的值,包括引用其它對(duì)象的成員。 反串行化(deserialization )是從字節(jié)流重建對(duì)象的過程。,對(duì)象流,Write FileOutputStrea

13、m out = new FileOutputStream(theTime); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject(Today); s.writeObject(new Date(); Read FileInputStream in = new FileInputStream(theTime); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date

14、)s.readObject();,Example:TestObjectOutputStream.java, TestObjectInputStream.java,對(duì)象版本,串行版本UID是一個(gè)long值,當(dāng)對(duì)象串行化時(shí)寫入到流中。缺省情況下,這個(gè)標(biāo)識(shí)符是類名、父類型和成員的一個(gè)散列值。 當(dāng)從ObjectInputStream讀取對(duì)象時(shí),先讀取串行版本UID,再加載類。如果加載類的UID與流中的UID不匹配,則拋出InvalidClassException。 可以顯式地聲明一個(gè)串行版本UID private static final long serialVersionUID = 307795172754062330L;,隨機(jī)訪問文件,隨機(jī)訪問文件允許對(duì)文件的內(nèi)容進(jìn)行非順序的讀寫。 RandomAcce

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論