[1] 程序设计

 /*-------------------------------
1.缓冲流是一种处理流,用来加快节点流对文件操作的速度
2.BufferedInputStream:输入缓冲流
3.BufferedOutputStream:输出缓冲流
4.在正常的Java开发中都使用缓冲流来处理文件,因为这样可以提高文件处理的效率
5.这里设计程序:使用缓冲流复制一个较大的视频文件
--------------------------------*/
package pack04; import java.io.*; public class CopyFile { public static void main(String[] args) { String src = "d:/TEST/加勒比海盗-黑珍珠号的诅咒.rmvb"; //源文件路径,该文件大小为3.01GB
String dst = "d:/TEST/加勒比海盗-黑珍珠号的诅咒-Java复制.rmvb"; //目标文件路径 long startTime = System.currentTimeMillis(); //获取复制前的系统时间
copy(src, dst);
long endTime = System.currentTimeMillis(); //获取复制后的系统时间 System.out.println("spend time: " + (endTime-startTime) ); //输出复制需要的时间,毫秒计 } //定义一个用于复制文件的静态方法,参数src代表源文件路径,参数dst代表目标文件路径
public static void copy(String src, String dst) { //提供需要读入和写入的文件
File fileIN = new File(src);
File fileOUT = new File(dst); BufferedInputStream bis = null;
BufferedOutputStream bos = null; try { //创建相应的节点流,将文件对象作为形参传递给节点流的构造器
FileInputStream fis = new FileInputStream(fileIN);
FileOutputStream fos = new FileOutputStream(fileOUT); //创建相应的缓冲流,将节点流对象作为形参传递给缓冲流的构造器
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos); //具体的文件复制操作
byte[] b = new byte[65536]; //把从输入文件读取到的数据存入该数组
int len; //记录每次读取数据并存入数组中后的返回值,代表读取到的字节数,最大值为b.length;当输入文件被读取完后返回-1
while( (len=bis.read(b)) != -1 ) {
bos.write(b, 0, len);
bos.flush();
} } catch(IOException e) { e.printStackTrace(); } finally { //关闭流,遵循先开后关原则(这里只需要关闭缓冲流即可)
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
} try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

[2] 测试结果

  

  测试结果显示,复制3.01GB大小的文件所用的时间约为1min。

注:希望与各位读者相互交流,共同学习进步。

Java分享笔记:使用缓冲流复制文件的更多相关文章

  1. Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容

    RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写.使用该类的write方法对文件写入时,实际上是一种覆盖效果,即 ...

  2. Java中字节流和字符流复制文件

    字节流和字符流复制文件的过程: 1.建立两个流对象 绑定数据源和目的地 2.遍历出需复制的文件写入复制过后的新文件中(只不过是遍历的时候是区分字节和字符的) 3.访问结束后关闭资源 字节流复制文件: ...

  3. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  4. 6.3(java学习笔记)缓冲流

    一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ...

  5. Java分享笔记:FileOutputStream流的write方法

    /*------------------------ FileOutputStream: ....//输出流,字节流 ....//write(byte[] b)方法: 将b.length个字节从指定字 ...

  6. Java分享笔记:FileInputStream流的 read()方法 和 read(byte[] b)方法

    /*------------------------ FileInputStream: ....//输入流,字节流 ....//从硬盘中存在的一个文件中读取内容,读取到程序中 ....//read() ...

  7. Java IO流之【缓冲流和文件流复制文件对比】

    与文件流相比,缓冲流复制文件更快 代码: package Homework; import java.io.BufferedOutputStream; import java.io.File; imp ...

  8. Java修炼——文件字节输入输出流复制和缓冲流复制

    一:文件字节输入输出流复制 首先明确数据源和目的文件,然后就是"中转站",最后就是关闭 package com.bjsxt.ioproject; import java.io.Fi ...

  9. 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream

    package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...

随机推荐

  1. Technical Committee Weekly Meeting 2016.06.21

    Meeting time: 2016.June.21 1:00~2:00 Chairperson:  Thierry Carrez Meeting summary: 1.Add current hou ...

  2. (转)awk数组详解及企业实战案例

    awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [root@nfs-server t ...

  3. pat1016. Phone Bills (25)

    1016. Phone Bills (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A long-di ...

  4. Tiled 地图编辑器使用教程-官方demo

    一.Tiled Map Editer 下载地址 http://www.mapeditor.org/download.html 二.官方教程查看 下载安装后,不管windows还是Mac系统都包含官方例 ...

  5. IntelliJ IDEA实时模板变量

    返回由当前方法返回的值的类型IntelliJ IDEA 实时模板中的模板变量允许用户输入.扩展模板后,变量将作为输入字段显示在编辑器中. IntelliJ IDEA 声明实时模板变量 模板中的变量以下 ...

  6. jquery 根据日期计算年龄

    <script type="text/javascript"> //jquery页面加载完成后,根据后端的出生日期,计算年龄 $(function () { // 获得 ...

  7. url长度

    今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的.URL中列出了所有参与该操作的Ticket Id.于是,我想起GET请求是有 ...

  8. CSS3制作3D旋转视频展示区

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. spring-cloud构架微服务(1)-全局配置

    使用spring-cloud是基于熟悉springboot基础上进行的.本篇介绍全局配置,spring-boot版本就以1.4.0来做吧.项目地址: https://git.oschina.net/b ...

  10. java研发常见问题总结 1

    1.java中所有类的父类是什么?他都有什么方法? Object类是所有类的直接或间接基类,如果一个类在声明时未继承基类,Java就默认其基类是Object,故Object被称为根类.该类位于java ...