FileInputStream 与 BufferedInputStream 效率对比

  FileInputStream 与 BufferedInputStream 效率对比

  我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3550158.html ,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。

  【问题】

  FileInputStream & FileOutputStream 和 BufferedInputStream & BufferedOutputStream 都能完成文件的读写。它们在原理上、时间效率上有什么不同,实际应用时应该如何选择呢?

  【实验】

  我们采用文件复制来做效率对比的实验。

  在FileOperator类的copyWithFileStream方法实现了使用FileInputStream和FileOutputStream复制文件,copyWithBufferedStream方法实现了使用BufferedInputStream和BufferedOutputStream复制文件。

  /*

  * Copyright (c) 2014 xxx.com. All Rights Reserved.

  */

  package utils;

  import java.io.BufferedInputStream;

  import java.io.BufferedOutputStream;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  /**

  * @author ham.hog created on 2014 14-2-12 下午2:58

  * @version 0

  */

  public class FileOperator {

  /** buffer size in bytes */

  final static int BUFFER_SIZE = 100;

  /**

  * copy file using FileInputStream & FileOutputStream

  * @param src copy from

  * @param dest copy to

  * @return;

  */

  public static void copyWithFileStream(File src, File dest){

  FileInputStream input = null;

  FileOutputStream output = null;

  try {

  input = new FileInputStream(src);

  output = new FileOutputStream(dest);

  byte[] buffer = new byte[BUFFER_SIZE];

  int copySize;

  while ((copySize = input.read(buffer)) > 0){

  output.write(buffer, 0, copySize);

  output.flush();

  }

  } catch (FileNotFoundException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  } finally {

  try {

  input.close();

  output.close();

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  }

  /**

  * copy file using BufferedInputStream & BufferedOutputStream

  * @param src copy from file

  * @param dest copy to file

  * @return;

  */

  public static void copyWithBufferedStream(File src, File dest){

  BufferedInputStream bufferedInput = null;

  BufferedOutputStream bufferedOutput = null;

  try {

  bufferedInput = new BufferedInputStream(new FileInputStream(src));

  bufferedOutput = new BufferedOutputStream(new FileOutputStream(dest));

  byte[] buffer = new byte[BUFFER_SIZE];

  int copySize;

  while ((copySize = bufferedInput.read(buffer)) > 0){

  bufferedOutput.write(buffer, 0, copySize);

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值