Java中的IO流

1、文件流:I/O流
Java中文件表示:d:/../…或者d:\..\..
File 類沒有無參構造方法.
2.i/o流的分類:
輸入流,輸出流
字節流,字符流
傳輸的數據單位是字節,也意味着字節流能夠處理任何一種文件。
字節流的組成:
類inputStream,子類:fileinputStream
outputStream,子類:fileoutputStream
InputStream is=new FileInputStream(“oracle.txt”);
byte[] bs = new byte[6];
int len = 0;
while ((len = fin.read(bs)) != -1) {
}
int read(byte[] b, int off, int len):從文件中讀取(最大)len個長度的字節,填充到byte數組中,從數組的off索引處開始填充。

字符流:Reader,Writer
InputStreamReader(File file)
OutputStreamWriter()

OutputStream:
向文件中追加內容的方式
FileInputStream(String path, boolean append)
FileOutputStream(File file, boolean append)
boolean append:是否在源文件後面追加要寫入的內容,若爲true則表示追加,false在覆蓋原文件本身的內容。

jdk7.0新特性:異常處理。try catch resources;
可以將要要關閉的資源放入try後面的括號中定義,這樣系統會自動關閉資源,不用在finally中調用close中關閉。
只要是實現java.io.Closeable接口的類,都可以放到try後邊的括號中實例化,最後這些資源都會被自動關閉。

節點流,過濾流。
過濾流:
DataStream:
子類:DataInputStream:readXXX();
子類:DataOutputStream:writeXXX();
BufferedStream:
子類:BufferedInputStream:
子類:BufferedOutputStream:
過濾開發步驟:
(1)、創建節點流。FileOutputStream fout = new FileOutputStream(“pi.dat”);
(2)、基於節點流創建過濾流。DataOutputStream dout = new DataOutputStream(fout);
BufferedOutputStream bout = new BufferedOutputStream(fout);
(3)、讀/寫數據。dout.writeDouble(3.14);
bout.write(bs);
(4)、關閉外層流。dout.close();//bout.flush

序列化:將java對象轉換成字節序列的過程;
實現serializable接口;
transient(對象保存時不需要維持) 關鍵字標註的屬性不會被序列化
靜態的屬性不會被序列化。
如果一個對象的屬性又是一個對象,則要求這個屬性對象也實現了 Serializable 接口。

字符編碼:
編碼:將字符轉換爲字節;解碼:將字節轉換爲字符。
亂碼產生:編碼使用一種字符集,而解碼使用了另一種字符集。

字符流:特點:(1)、可以將一個字節流轉換爲字符流。(2)、轉換的過程中可以指定編碼方式。
InputStreamReader,OutputStreamWriter;

字符過濾流:
BufferedReader:提供了緩衝功能,可以一行一行的讀取內容。
public String readLine();
PrintWriter:提供了緩衝功能,可以一行一行的輸出內容。
println();
字符過濾流(BufferedReader,PrintWriter)開發步驟:
(1)、創建字節流;InputStream is = new FileInputStream(“oracle.txt”);
(OutputStream output = new FileOutputStream(“abc.txt”, true);)
{}
(2)、基於字節流創建過濾流;InputStreamReader ir = new InputStreamReader(is);
(Writer writer = new OutputStreamWriter(output, “utf-8”);)
(3)、基於過濾流創建字符過濾流(封裝);BufferedReader br = new BufferedReader(ir);
(PrintWriter printWriter = new PrintWriter(writer);)
(4)、讀/寫數據;value = br.readLine()) != null;(printWriter.println(“Hello”);)
(5)、關閉外層流。

流的關係圖:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章