注意
-
为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组
-
根据数据操作单位可以把缓冲流分为:
BufferedInputStream
和BufferedQutputStream
BufferedReader
和BufferedWriter
-
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法
-
对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出
缓冲字节输入流BufferedInputStream
输出文件内容
public static void testBufferInputStream(){
try {
FileInputStream fileInputStream = new FileInputStream("D:\\workspace\\src\\FileTest\\tt.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
byte[] bytes = new byte[10];
int len =0;
while ((len = bufferedInputStream.read(bytes))!= -1){
System.out.println(new String(bytes,0,len));
}
bufferedInputStream.close();
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
缓冲字节输出流BufferedOutputStream
将字符串str写入文件中
public static void testBufferOutputStream(String str){
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream("D:\\workspace\\qiuzhiketang\\src\\FileTest\\tt.txt");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
bufferedOutputStream.write(str.getBytes());//写入内存
bufferedOutputStream.flush();//刷到硬盘上
bufferedOutputStream.close();//晚开先关
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
缓冲字节流:复制文件
将一个文件的内容复制到另一个文件中
public static void copyFile(String inPath,String outPath){
try {
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(inPath));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(outPath));
byte[] bytes = new byte[10];
int len =0;
while ((len = bufferedInputStream.read(bytes))!= -1){
bufferedOutputStream.write(bytes);
}
bufferedOutputStream.flush();
bufferedOutputStream.close();
bufferedInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}