【典型例题】复制文件

题目:复制一个文件夹下面的文件,使用InputStream和OutputStream方法;

思路:

1、创建两个对象,将旧被复制的源文件file1和新复制过来的生成文件file2;

2、调用自定义复制方法;

     自定义方法:a)旧被复制文件为空,不存在,不是文件;

                           b)新复制文件夹不存在,创建该路径;

                           c)开始一个字节一个字节顺序复制传输(系统自己保证顺序传输)

3、加入程序运行时间;

package A_January;
import java.io.*;
/**
 * Created by Administrator on 17-1-19.
 */
public class FileTest2 {
    public static void main(String[] args) {
        //实现一个文件的拷贝;
        //将源文件f1复制到f2目录中;
        //文件存放目录,真假不知;这里仅仅是路径(目录);
        // 存在不存在不一定,也有人被中介要求填写信息,随口编了一个假的地址;
        File file1=new File("E:\\玉置浩二 - 上を向いて歩こう.mp3");
        File file2=new File("E:\\电影\\☆中国电影\\玉置浩二 - 上を向いて歩こう.mp3");//第2个文件路径;
        long startTime=System.currentTimeMillis();//程序开始时间,用以记录程序开始时间(按照毫秒计)
        copyFile(file1,file2);//调用下文中,自定义的copyFile方法;
        long endTime=System.currentTimeMillis();//程序结束时间;用以记录程序结束时间;
        System.out.println(endTime-startTime);//输出时间差,计算程序运行时间;
    }
//自定义copy复制方法;
public static void copyFile(File fileFrom,File fileTo){
    //如果源文件为空||不存在||不是文件夹;
     if (fileFrom==null||!fileFrom.exists()||!fileFrom.isFile()){
         System.out.println("拷贝失败");
         return;//结束,跳出,返回;
     }
     File parent=new File(fileTo.getParent());//定义父目录
     // 如果父文件夹不存在;
     if (!parent.exists()){
         //创建该文件夹;
         parent.mkdirs();
     }
     FileInputStream fis=null;
     FileOutputStream fos=null;
     try {
         //为文件类型分配内存空间;
         fis=new FileInputStream(fileFrom);
         fos=new FileOutputStream(fileTo);
         //读取  fis.read();//读取一个字节
         //全真循环;
         while(true){
             //系统从输入流读取数据,然后向输出流写出数据;
             int data=fis.read();
             fos.write(data);
             //当读取的字节为-1时候,(系统默认-1是输入流和输出流的结尾),程序结束,停止全真循环;
             if(data==-1){
                 break;
             }
         }
         System.out.println("拷贝成功");
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     }

    }
}
复制成功后:


如果你在运行该软件,再次复制,会报错:












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值