更正--提高文件复制性能
来源:互联网 发布:股票大作手回忆录 知乎 编辑:程序博客网 时间:2024/06/10 09:17
更正一下上午发的用FileInputStream和FileOutputStream复制文件,利用数组的方法改善其性能。
首先要多谢各位大神的指点,小生刚接触Java不久,人也不够聪明,很多都不太会,想法太简单,写出的东西也就过于简单。还得请各位大神多多指教啊
下面要回归到主题,讲一下自己考虑不周全的地方,虽然用了数组来作为缓存区,但是没考虑文件的大小,及数组的长度。听了大神的指点后,便在数组长度方面做了测试,数组的长度设置大一些速度相对快一些,但是也并不是越大越好,因为数组长度越大占用的内存就越大,同样会降低速度,所以最适合的数组长度要经过测试才能知道多大最合适,我测试的时候数组的长度在100000的时候速度相对来说是最快的。(这个可能要根据情况不同来定 )下面就附上我听大神指点后再写的代码。
/**
* 提高文件复制效率:例如要将F:\sun\上课笔记\cc.txt中的内容复制到F:\sun\上课笔记\q.txt中, cc.txt的大小随意 */
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Homeworkcopy3 {
public static void main(String[] args) {
try {
//根据文件路径创建文件输入流
FileInputStream input=new FileInputStream("F:\\sun\\上课笔记\\cc.txt");
// 根据文件路径创建文件字节输出流, 如果文件不存在,就会自动创建这个文件
FileOutputStream output=new FileOutputStream("F:\\sun\\上课笔记\\q.txt");
//创建一个文件复制前的时间
long time = System.currentTimeMillis();
//创建一个字符数组并给它的长度赋值,长度可以自己任意定,用来作为中间数组存放流中的数据
byte[] b=new byte[500];
try {
//输入流中的字节数如果不为0就继续进行读取和写入
while(input.available()!=0){
//从输入流中读取字节填充b数组
input.read(b);
//将b数组中的所有字节写到输出流中
output.write(b);
}
//刷新此输出流并强制写出所有缓冲的输出字节
output.flush();
//关闭输出流
output.close();
//关闭输入流
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//定义一个结束时间,计算文件复制时间
long time1 = System.currentTimeMillis();
System.out.println(time1-time);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
首先要多谢各位大神的指点,小生刚接触Java不久,人也不够聪明,很多都不太会,想法太简单,写出的东西也就过于简单。还得请各位大神多多指教啊
下面要回归到主题,讲一下自己考虑不周全的地方,虽然用了数组来作为缓存区,但是没考虑文件的大小,及数组的长度。听了大神的指点后,便在数组长度方面做了测试,数组的长度设置大一些速度相对快一些,但是也并不是越大越好,因为数组长度越大占用的内存就越大,同样会降低速度,所以最适合的数组长度要经过测试才能知道多大最合适,我测试的时候数组的长度在100000的时候速度相对来说是最快的。(这个可能要根据情况不同来定 )下面就附上我听大神指点后再写的代码。
/**
* 提高文件复制效率:例如要将F:\sun\上课笔记\cc.txt中的内容复制到F:\sun\上课笔记\q.txt中, cc.txt的大小随意 */
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Homeworkcopy3 {
public static void main(String[] args) {
try {
//根据文件路径创建文件输入流
FileInputStream input=new FileInputStream("F:\\sun\\上课笔记\\cc.txt");
// 根据文件路径创建文件字节输出流, 如果文件不存在,就会自动创建这个文件
FileOutputStream output=new FileOutputStream("F:\\sun\\上课笔记\\q.txt");
//创建一个文件复制前的时间
long time = System.currentTimeMillis();
//创建一个字符数组并给它的长度赋值,长度可以自己任意定,用来作为中间数组存放流中的数据
byte[] b=new byte[500];
try {
//输入流中的字节数如果不为0就继续进行读取和写入
while(input.available()!=0){
//从输入流中读取字节填充b数组
input.read(b);
//将b数组中的所有字节写到输出流中
output.write(b);
}
//刷新此输出流并强制写出所有缓冲的输出字节
output.flush();
//关闭输出流
output.close();
//关闭输入流
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//定义一个结束时间,计算文件复制时间
long time1 = System.currentTimeMillis();
System.out.println(time1-time);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
0 0
- 更正--提高文件复制性能
- 提高文件复制的性能
- 提高文件复制性能之多线程复制文件
- 提高文件性能
- vim 全选复制,常见解法更正
- 更正!
- SQL Server提高合并复制性能(未看)
- 使用sendfile() 提高网络文件发送性能
- 提高布局文件的显示性能。
- 利用缓存读取文件提高性能
- 文件上传,用通道,提高性能
- 提高性能
- 性能提高
- 巧用文件保存对象来提高JSP的性能
- 使用内存映射文件来提高你程序的性能
- 使用内存映射文件来提高你程序的性能
- 使用内存映射文件来提高你程序的性能
- 使用内存映射文件来提高你程序的性能
- 集合框架概念整理
- 提高文件复制的性能
- 谷歌卫星地图下载器有哪些那款最好用
- STM32F030_KEY详细配置说明
- 《Java 2 图形设计卷Ⅱ- SWING》第1章 简 介
- 更正--提高文件复制性能
- 构造函数的初始化列表
- Expand 二级目录 集合实现的
- Spring与RMI 集成,实现远程调用
- CocoaPods 使用本地仓库
- TLS协议分析 (一) 设计目标及历史
- arduino esp8266透传代码
- MapReduce部署到yarn环境中
- 提高文件复制性能之多线程复制文件