使用缓冲流与不使用缓冲流时间对比
class Panda{
public static void main(String[] args) throws IOException {
//创建Byte[] 数组
//【String转Bytes[]数组使用getBytes()方法】
String message = "小金,小哈,小花\n";
for(int i = 0;i < 10000; i++){
message = message+"小金,小哈,小花\n";
}
byte[] bytes = message.getBytes();
//创建File类对象
File file = new File("C:\\Users\\123\\Desktop\\file\\file.txt");
//使用缓冲流情况下
long bufferedbeginTime = System.currentTimeMillis();
//创建文件字节输出流对象 【追加写】
FileOutputStream fileOutputStream = new FileOutputStream(file);
//创建字节缓冲流对象 【构造方法传递的参数是文件字节输入流对象】
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
//调用方法将Byte[]数组中的数据写入到文件中
//调用方法进行写入
bufferedOutputStream.write(bytes);
//关闭资源【先开后关】
bufferedOutputStream.close();
long bufferedEndTime = System.currentTimeMillis();
System.out.println("缓冲流使用时间:"+(bufferedEndTime - bufferedbeginTime));
//不使用缓冲流
FileOutputStream fileOutputStream1 = new FileOutputStream(file);
fileOutputStream1.write(bytes);
//关闭资源
fileOutputStream1.close();
long endTime = System.currentTimeMillis();
System.out.println("不使用缓冲流时间:"+(endTime-bufferedEndTime));
}
}
【总结】
<1>使用缓冲流的效率是远远高于不使用任何缓冲的情况的(不包括使用缓冲数组) 【这里是一个典型的时间换空间的例子】
<2>通过代码可以发现非缓冲IO操作时使用数组作为缓冲区和使用缓冲流操作,时间效率相似;【推荐还是使用系统提供的缓冲流】因为更加的安全;