缓冲流(处理流的一种)
说明和使用
-
缓冲流有
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedWriter
-
处理流,就是“套接”在已有的流的基础上的
-
处理流有flush() 刷新缓冲区的操作
-
缓冲流作用于留上,读写速度比节点流更快
-
提高读写速度的原因:内部提供了一个缓冲区
-
public class BufferedInputStream extends FilterInputStream { private static int defaultBufferSize = 8192; }
-
-
使用例子
-
public void copyFileAdv(String srcFileName,String destFileName){ File src = new File(srcFileName); File dest = new File(destFileName); FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { fileInputStream = new FileInputStream(src); fileOutputStream = new FileOutputStream(dest); bis = new BufferedInputStream(fileInputStream); bos = new BufferedOutputStream(fileOutputStream); byte[] bBuf = new byte[1024]; int length; while((length = bis.read(bBuf))!= -1){ bos.write(bBuf,0,length); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { //先关闭外层流 if(bis != null){ try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if(bos != null){ try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } //再关闭内层流 if(fileInputStream != null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if(fileOutputStream != null){ try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }
-
-
BufferedReader,BufferedWriter使用例子
-
public void testReaderWriterCopy(){ BufferedReader bufferedReader = null; BufferedWriter bufferedWriter = null; try { bufferedReader = new BufferedReader(new FileReader(new File("hello1.txt"))); bufferedWriter = new BufferedWriter(new FileWriter(new File("hello4.txt"))); //读写操作 //方式一:使用char[]数组 /*char[] buf = new char[5]; int length; while((length = bufferedReader.read(buf)) !=-1){ bufferedWriter.write(buf,0,length); bufferedWriter.flush(); }*/ //方式二:使用String String s ; while((s = bufferedReader.readLine())!= null){ bufferedWriter.write(s);//data中不包含换行符 bufferedWriter.write("\n"); bufferedWriter.newLine(); bufferedWriter.flush(); }; } catch (IOException e) { e.printStackTrace(); } finally { if(bufferedReader != null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } if(bufferedWriter != null){ try { bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } }