欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

更正--提高文件复制性能 博客分类: java基础  

程序员文章站 2024-03-16 17:10:46
...
      更正一下上午发的用FileInputStream和FileOutputStream复制文件,利用数组的方法改善其性能。

       首先要多谢各位大神的指点,小生刚接触Java不久,人也不够聪明,很多都不太会,想法太简单,写出的东西也就过于简单。还得请各位大神多多指教啊更正--提高文件复制性能
            
    
    博客分类: java基础   更正--提高文件复制性能
            
    
    博客分类: java基础   更正--提高文件复制性能
            
    
    博客分类: java基础  
      
        下面要回归到主题,讲一下自己考虑不周全的地方,虽然用了数组来作为缓存区,但是没考虑文件的大小,及数组的长度。听了大神的指点后,便在数组长度方面做了测试,数组的长度设置大一些速度相对快一些,但是也并不是越大越好,因为数组长度越大占用的内存就越大,同样会降低速度,所以最适合的数组长度要经过测试才能知道多大最合适,我测试的时候数组的长度在100000的时候速度相对来说是最快的。(这个可能要根据情况不同来定更正--提高文件复制性能
            
    
    博客分类: java基础   )下面就附上我听大神指点后再写的代码。

/**
* 提高文件复制效率:例如要将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();
}
}
}