2020-03-13-Java

1.BufferedInputStream和BufferedOutputStream

(1)沒有緩沖區,去復制文件,如何操作?
【案例1】復制一個大文件


image.png

image.png

image.png

思路:


image.png

(1)創建一個文件輸入流對象FileInputStream,引用要復制的文件。
(2)無法一次性讀入,讀取這個文件的內容,到緩沖區。所以建立一個字節數組。
(3)創建一個文件輸出流對象FileOutputStream,引用到目標文件。
(4)將緩沖區內容寫入到目標文件。
BufferedInputStream和BufferedOutputStream的優勢:
降低磁盤IO操作次數;帶有緩沖區。

BufferedInputStream

構造函數:

new BufferedInputStream(InputStream):不指定緩沖區大小,默認是8192
new BufferedInputStream(InputStream,Int),參數2指定緩沖區大小

api:

int available(),返回數據流有效的長度;
void close();關閉
int read();從緩沖區中讀取
int read(byte[] b,int off,int len),從數組b中off位置,讀len個;
void reset();重置
long skip(long n);跳過多少個字節。

BufferedOutputStream

構造函數:

new BufferedOutputStream(outputstream)
new BufferedOutputStream(outputstream,size)
api:
void flush();
write(byte b);寫入一個字節
write(byte[] b,int off,int len),從b中獲取,寫入開始位置為off,寫len個。
【案例】使用BufferedInputStream和BufferedOutputStream復制文件。
思路:


image.png

image.png

image.png

image.png

image.png

2.BufferedReader和BufferedWriter

字符流;帶有緩沖區;

BufferedReader

構造方法:

new BufferedReader(Reader in)
new BufferedReader(Reader in,int size)

api:

void close();
int read();
int read(char[] cbuf,int off,int len)
String readLine();

BufferedWriter:

構造方法:

new BufferedWriter(Writer out)
new BufferedReader(Writer out ,int size)

api:

void close()
void flush()
void new Line();寫入一個換行符
void write(int c)
void write(char cbuf[],int off,int len)
void write(String s,int off,int len)
【案例】


image.png

image.png

image.png

image.png

3.InputStreamReader和OutputStreamWriter

都是轉換流,將字節流轉換成字符流;或者將字符流轉換成字節流

OutputStreamWriter構造方法:

new OutputStreamWriter(OutputStream)
new OutputStreamWriter(OutputStream,charsetName),指定字符集編碼

api:

void write(int c);
void write(String str,int off,int len)
void flush();

InputStreamReader構造方法

new InputStreamReader(inputStream)
new InputStreamReader(inputStream,charsetName),指定字符集編碼

api:

int read()
int read(char[] cbuf)


image.png

【案例1】


image.png

image.png

【案例2】


image.png

image.png

步驟:
(1)使用記事本寫入文件,內容中文。
(2)在代碼中使用gbk來讀取文件信息。保證中文不亂碼。
【作業】
把昨天出題,判斷是否正確,使用BufferedInputStream和BufferedOutputStream改寫。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。