目錄
- 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ù)一次性寫到文件中。
- 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é)。
- 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();