import java.io.*;

 import java.util.Scanner;

 public class fileCopy 

 {

  public static void main(String []args) throws Exception

  {

   try{

    if("Copy".equals(args[0]) || "copy".equals(args[0]))

    {

     File file1 = new File(args[1]); // 指定要操作的源文件路径

     if(file1.exists()) //如果源文件存在

     {

      File file2 = new File(args[2]); // 指定要操作的目标文件路径

      if(file2.exists())//如果目标文件存在

      {

       FileReader fr = new FileReader(args[1]);   //创建一个FileReader对象   从磁盘读

       BufferedReader br = new BufferedReader(fr);    //创建一个BufferedReader对象

       Scanner input = new Scanner(System.in) ;

       System.out.print("是否要覆盖目标文件?    (y/n)  ");

       String x= input.next();

       if("y".equals(x)|| "Y".equals(x))

       {

        FileWriter fw =new FileWriter(args[2]);    //创建一个FileWriter对象   写到磁盘

        BufferedWriter bw =new BufferedWriter(fw);     //创建一个BufferedReader对象

        if(br.ready())

        {

         String tmp=null;

         while((tmp=br.readLine())!=null)

         {

          bw.write(tmp);                              //写一行

          bw.newLine();                               //写一个换行符

         }

        }

        bw.flush();            //清空缓存

        bw.close();            //关闭流

        fw.close();            //关闭流

        br.close();                                   //关闭流

        fr.close();                                   //关闭流

        System.out.println("成功覆盖文件!");

       }

       else

       {

        FileWriter fw =new FileWriter(args[2],true);    //创建一个FileWriter对象   写到磁盘

        BufferedWriter bw =new BufferedWriter(fw);     //创建一个BufferedReader对象

        if(br.ready())

        {

         String tmp=null;

         while((tmp=br.readLine())!=null)

         {

          bw.write(tmp);                              //写一行

          bw.newLine();                               //写一个换行符

         }

        }

        bw.flush();            //清空缓存

        bw.close();            //关闭流

        fw.close();            //关闭流

        br.close();                                   //关闭流

        fr.close();                                   //关闭流

        System.out.println("成功追加文件!");

       }

      }

      else

      {

       FileReader fr = new FileReader(args[1]);   //创建一个FileReader对象   从磁盘读

       BufferedReader br = new BufferedReader(fr);    //创建一个BufferedReader对象

       FileWriter fw =new FileWriter(args[2]);    //创建一个FileWriter对象   写到磁盘

       BufferedWriter bw =new BufferedWriter(fw);     //创建一个BufferedReader对象

       System.out.println("不存在目标文件,正在自动生成一个新文件!");

       if(br.ready())

       {

        String tmp=null;

        while((tmp=br.readLine())!=null)

        { 

         bw.write(tmp);                              //写一行

         bw.newLine();                               //写一个换行符

        }

       }

       bw.flush();            //清空缓存

       bw.close();            //关闭流

       fw.close();            //关闭流

       br.close();                                   //关闭流

       fr.close();                                   //关闭流

      }

     }

     else

     {

      System.out.println("源文件不存在!");

     }

    }

    else

    {

     System.out.println("输入错误!");

    }

   }

   catch (IOException e) 

   {

    e.printStackTrace();

         } 

  }

 }


Java实现DOS中的Copy命令的更多相关文章

  1. Oracle数据库间的数据复制 - SQLPlus中的COPY命令

    Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同. 根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持 ...

  2. 畸形的 dockerfile中的COPY命令-

    dockerfile中的COPY是指COPY 指定目录的“子级目录”下所有的目录和文件,到指定目录中,这个shell中的cp命令大相径庭,使得很多人纳闷,怎么cpy过去的文件不是自己想要的

  3. DOS中的ECHO命令详解

    1. 作为控制批处理命令在执行时是否显示命令行自身的开关  格式:ECHO [ON|OFF]  如果想关闭“ECHO OFF”命令行自身的显示,则需要在该命令行前加上“@”.  2. 显示当前ECHO ...

  4. DOS中的CD命令详解

    CD命令是改变子目录的命令.格式:CD [路径] . 值得明确的是:CD命令只能进入当前盘符中的文件夹,改变操作的根目录(改变操作盘符),则不需用cd.例如你当前是在c:盘下,要到d:盘,只需键入d: ...

  5. dos中执行cd命令切换不到对应的盘解决方法

    可以使用cd命令,不过需要加参数 /d,如: cd /d e:

  6. Dockerfile中COPY命令的简单性

    dockerfile中的COPY命令是不会拷贝目录结构的,它只会单纯把包含的所有文件拷贝到另一个目录中去. 相关链接:https://www.cnblogs.com/sparkdev/p/957324 ...

  7. Dockerfile 中的 COPY 与 ADD 命令

    Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景. Build 上下文的概念 在使用 docker ...

  8. DOS中命令的格式

    ---------------siwuxie095 一.DOS中,命令使用格式的一般形式 用中文表达的形式为: [路径]  关键字  [盘符]  [路径]  文件名  [扩展名]  (参数)  [参数 ...

  9. 【Docker】涨姿势,深入了解Dockerfile 中的 COPY 与 ADD 命令

    参考资料:https://www.cnblogs.com/sparkdev/p/9573248.html Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令 ...

随机推荐

  1. js字符串和正则表达式

    字符串的生成转换 你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: var myStr = num.toString(); // "19" var myStr ...

  2. angular4 组件通讯、生命周期

    主要通讯形式 父组件通过属性绑定到子组件,子组件通过事件传递参数到父组件 父组件通过局部变量获取子组件的引用 父组件使用@ViewChild获取子组件的引用 两个不相关联的组件使用中间人模式交互 终极 ...

  3. KNN python实践

    本文实现了一个KNN算法,准备用作词频统计改进版本之中,这篇博文是从我另一个刚开的博客中copy过来的. KNN算法是一个简单的分类算法,它的动机特别简单:与一个样本点距离近的其他样本点绝大部分属于什 ...

  4. 激活win10专业版

    每180天激活一次

  5. C#中的DateTime

    一.DateTime是值类型还是引用类型的探索 二.了解DateTime结构体 三.DateTime.Now和DateTime.UtcNow是怎么计算出来的 一.DateTime是值类型还是引用类型的 ...

  6. BZOJ1018[SHOI2008]堵塞的交通——线段树

    题目描述 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总 ...

  7. BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap

    题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...

  8. BZOJ1834[ZJOI2010]网络扩容——最小费用最大流+最大流

    题目描述 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求:  1.在不扩容的情况下,1到N的最大流:  2.将1到N的最大流增加K所需的最小扩容费用 ...

  9. M - Help Hanzo LightOJ - 1197 (大区间求素数)

    题意: 求[a,b]之间的素数的个数 数很大...数组开不起 所以要想到转化 因为小于等于b的合数的最小质因子 一定小于等于sqrt(b),所以只需要求出来[0,sqrt(b)]的素数  然后取倍数删 ...

  10. Codeforces Round #404 (Div. 2)A,B,C

    A. Anton and Polyhedrons 题目链接:http://codeforces.com/contest/785/problem/A 智障水题 实现代码: #include<bit ...