Android-IO流之緩沖字節(jié)流BufferedInputStream/BufferedOutputStream

目錄

  1. BufferedInputStream/BufferedOutputStream
    --5.1 BufferedOutputStream 緩沖輸出字節(jié)流
    --5.2 BufferedInputStream 緩沖輸入字節(jié)流
    --5.3 使用BufferedInputStream和BufferedOutputStream進行拷貝

5.BufferedInputStream/BufferedOutputStream(需要flush()才可寫入)

字節(jié)緩沖流(內(nèi)置一個緩沖區(qū)(數(shù)組))
內(nèi)存的運算效率比硬盤快很多,所以只有降低硬盤的讀取次數(shù)才會提高效率。


5.1 BufferedOutputStream

程序向流中寫出字節(jié)時,不會直接寫到文件中,會先寫到緩沖區(qū)中,直到緩沖區(qū)寫滿,才會把緩沖區(qū)中的數(shù)據(jù)一次性寫到文件中。

  1. BufferedOutputStream常用構(gòu)造方法
public BufferedOutputStream(OutputStream out)

2.重要方法

public synchronized void write(int b)
public synchronized void write(byte b[], int off, int len)
public synchronized void flush() //用于刷新緩沖區(qū),刷新后可再次讀出,而close是關(guān)閉流釋放資源了。

5.2 BufferedInputStream

程序讀取字節(jié)時,BufferedInputStream一次性從文件中讀取8192個字節(jié)存在緩沖區(qū),程序讀取時,不用找文件,直接從緩沖區(qū)中讀取,直到緩沖區(qū)中的所有字節(jié)都被讀取,再重新從文件中讀取8192個字節(jié)。

  1. BufferedInputStream常用構(gòu)造方法
public BufferedInputStream(InputStream in)

2.重要方法

public synchronized int read()
public synchronized int read(byte b[], int off, int len)

5.3 使用BufferedInputStream和BufferedOutputStream進行拷貝

File dir = Environment.getExternalStorageDirectory();
File file = new File(dir, "abc.txt");
File dst = new File(dir, "dst1.text");

FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);

FileOutputStream fos = new FileOutputStream(dst);
BufferedOutputStream bos = new BufferedOutputStream(fos);

byte[] buffer = new byte[1024];
int len = -1;
while((len = bis.read(buffer))!=-1){
    bos.write(buffer,0,len);
 }
bis.close();
fis.close();
fos.close();
bos.close();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容