Java分享笔记:使用缓冲流复制文件
[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分享笔记:使用缓冲流复制文件的更多相关文章
- Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容
RandomAccessFile流:随机存取文件流,该类定义了一个记录指针,通过移动指针可以访问文件的任意位置,且对文件既可以读也可以写.使用该类的write方法对文件写入时,实际上是一种覆盖效果,即 ...
- Java中字节流和字符流复制文件
字节流和字符流复制文件的过程: 1.建立两个流对象 绑定数据源和目的地 2.遍历出需复制的文件写入复制过后的新文件中(只不过是遍历的时候是区分字节和字符的) 3.访问结束后关闭资源 字节流复制文件: ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- 6.3(java学习笔记)缓冲流
一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ...
- Java分享笔记:FileOutputStream流的write方法
/*------------------------ FileOutputStream: ....//输出流,字节流 ....//write(byte[] b)方法: 将b.length个字节从指定字 ...
- Java分享笔记:FileInputStream流的 read()方法 和 read(byte[] b)方法
/*------------------------ FileInputStream: ....//输入流,字节流 ....//从硬盘中存在的一个文件中读取内容,读取到程序中 ....//read() ...
- Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快 代码: package Homework; import java.io.BufferedOutputStream; import java.io.File; imp ...
- Java修炼——文件字节输入输出流复制和缓冲流复制
一:文件字节输入输出流复制 首先明确数据源和目的文件,然后就是"中转站",最后就是关闭 package com.bjsxt.ioproject; import java.io.Fi ...
- 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream
package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...
随机推荐
- C++ stl vector介绍
转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...
- jq学习总结之方法
三.方法 1.length 2.index()3.get() reverse()4.not()5.filter()6.find()7.each()8.addBack()9.attr()10.toggl ...
- golang and mogodb
1.golang的mogodb包下载:http://gopkg.in/mgo.v2 http://gopkg.in/mgo.v2/bson 2.golang的mongodb操作(mgo):htt ...
- C# Label背景透明
Label背景透明是相对于Label的Parent而言的,如果Label的Parent是一个winform,而这个winform又有一个PictureBox,现在Label放在PictureBox上, ...
- XHML教会我的一些东西-4
今天把“河畔林语”的项目看完了.我自己也试着做了一下,这算是自己写的第一个项目吧.虽然全部是模仿,而且经常一边看写好的一边自己写,还是自己不够成熟呀. 不知道为什么,我用我的电脑进http://www ...
- 零基础逆向工程35_Win32_09_临界区_CRITICAL_SECTION结构
1 引入 为什么会存在临界区这中机制呢?是为多线程同时访问全局变量而引入的.也就是上一篇帖子的末尾流出的问题程序的解决办法. 看懂了上面的,那么我们再罗嗦总结一下: 1.多线程访问全局变量时,存在线程 ...
- 栅格那点儿事(二)---细看Raster属性
细看Raster属性 如果你已经看完了上一章,你已经了解了栅格数据是由一个个像元(Cell)按照行列方式构成的,每一个像元都有自己的像元值,并且这些像元值根据栅格类型的不同,可以代表反射值,或高程值, ...
- 【Node.js】初识Node.js
因组里项目需要,我和另外一名同事要学习Node.js.之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术, ...
- 再谈 Struts1.x 的运行机制
1.Action类 execute 方法 ActionMapping 对应 <action path="user" type="myuser.UserAction& ...
- java学习笔记之基础知识
1.class不加修饰符默认default,只在当前包里能用. 2.构造函数前面的修饰符的作用类似class的,限制引用的权限. 3.java对象的创建其实就是类的实例化,类的实例化就是在堆上copy ...