java文件复制

import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
public class TestDemo{

  /*  设置初始化参数:java d:\my.jpg d:\mldn.jpg
    初始化参数是main()函数中的参数,在这里的两个参数就是要执行的两个地址,中间用空格隔开
    在控制台命令输入执行程序的时候输入的命令是:java TestDemo d:\my.jpg d:\mldn.jpg
    当然也可以字eclipse中设置初始化参数
    */



    public static void main(String[] args) throws Exception{
        long start=System.currentTimeMillis();//取得复制开始的时间

        //判断初始化参数的个数,应该为两个,源文件和输出文件
        if (args.length!=2) {
            System.out.println("命令执行错误!");
            System.exit(1);//程序退出执行。
        }

        //如果输入参数正确,应该进行源文件有效性的验证
        File inFile=new File(args[0]);//第一个路径为源文件
        if (!inFile.exists()) {
            System.out.println("源文件不存在请确认执行路径!");
            System.exit(1);

        }

        //如果此时源文件正确,就需要定义输出文件,同时要考虑到输出文件有目录
        File outFile=new File(args[1]);
        if(!outFile.getParentFile().exists()){
            outFile.getParentFile().mkdirs();//创建目录
        }

        //实现文件内容的复制,分别定义输出流与输入流对象
        InputStream input=new FileInputStream(inFile);
        OutputStream output=new FileOutputStream(outFile);

        int temp=0;//保存每次读取数据的长度
        //每次读取1024个字节,最大2048个字节,在实际开发中需要并行访问,不能太大
        byte data[]=new byte[1024];

        //将每次读取进来的数据保存在字节数组里面,并且返回读取的个数
        while((temp=input.read(data))!=-1){//循环读取数据
            output.write(data,0,temp);//输出数组
        }

        input.close();
        output.close();
        long end=System.currentTimeMillis();//取得结束操作时间
        System.out.println("复制所花费的时间:"+(end-start));//计算操作完成的时间
    }

}

猜你喜欢

转载自blog.csdn.net/guohaocan/article/details/80938697
今日推荐