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 ...
随机推荐
- MongoDB数据库常用操作
推荐文章 --- 一天精通MongoDB数据库 注意: monogdb数据在使用之后必须及时 mongodb.close()否则后台崩溃. 1. 删除文档中的一个字段 db.<集合名>.u ...
- 【密码学】RSA密钥长度、明文长度和密文长度
本文介绍RSA加解密中必须考虑到的密钥长度.明文长度和密文长度问题,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,天缘以后还会补充几篇RSA基础知识专题文章,用最简单最通俗的语言描述RS ...
- pat04-树7. Search in a Binary Search Tree (25)
04-树7. Search in a Binary Search Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 ...
- NodeJS 开发应用
NodeJS 开发应用 使用的 Node 版本: V8.11.4 开发工具: VSCode 1.27.1 系统: Deepin 15.7 Desktop x64 项目结构 项目结构 Project i ...
- textarea输入框显隐文字
html: <textarea class="dxtd_text"></textarea> javascript: //管理端短信 var textarea ...
- DataGridView带图标的单元格实现
目的: 扩展 C# WinForm 自带的表格控件,使其可以自动判断数据的上下界限值,并标识溢出. 这里使用的方法是:扩展 表格的列 对象:DataGridViewColumn. 1.创建类:Data ...
- C#中事件的一些总结
事件中 sender和e 事件中不同的对象 object sender 是事件的对象 eventages e 是事件对象传递过来的参数对象 如 private button_click(O ...
- DJ轮回舞曲网下载教程
该网站网址为:http://www.92cc.com/ 昨天有网友问我这个网站能不能下载.我告诉他,只要能在线试听的就能下载 于是今天出个临时教程 教大家如何获取试听的音乐URL. 第一步找到试听的网 ...
- 粗看ES6之函数
标签: es6 javascript 箭头函数 ES6为了书写方便引入了函数的全新简写方式-箭头函数 <!DOCTYPE html> <html> <head> & ...
- HTML知识点梳理