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. 梯度、散度、旋度、Jacobian、Hessian、Laplacian 的关系图

    转自松鼠的窝 一.入门

  2. ELK日志框架(1):安装Elasticsearch组建单服务器多节点集群

    ELK简介 最近有个需求搭建一套日志系统用于集成几个业务系统的日志提供快速的检索功能,目前是用Log4net存数据库+Error级别发邮件方式,也算简单暴力好用,但历史日志的模糊查询确实很慢,所以使用 ...

  3. Windows server 2008 r2下载地址和激活破解方法

    Windows 7发布了服务器版本——Windows Server 2008 R2.同2008年1月发布的Windows Server 2008相比,Windows Server 2008 R2继续提 ...

  4. html DOM簡介

    DOM:文檔對象模型 dom分為3類,核心DOM.xml DOM.HTML DOM: 核心DOM:針對任何結構化文檔的標準模型: xml DOM:針對xml的標準模型,定義了所有的元素的對象和屬性,以 ...

  5. hdu1285

    解题思路:拓扑排序+优先队列,每次找入度为零时的点的时候且值最小的...我觉得题目有点问题,刚开始写的时候,以为样例的答案是1 4 2 3,毕竟1和4没输过啊...结果去看了样例一眼,傻了. #inc ...

  6. BZOJ2124 等差子序列(树状数组+哈希)

    容易想到一种暴力的做法:枚举中间的位置,设该位置权值为x,如果其两边存在权值关于x对称即合法. 问题是如何快速寻找这个东西是否存在.考虑仅将该位置左边出现的权值标1.那么若在值域上若关于x对称的两权值 ...

  7. P2577 [ZJOI2005]午餐

    题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各 ...

  8. Java递归删除目录下所有的txt文件

    public static void delAllFile(File path) { if (!path.exists() || !path.isDirectory()) { //不是目录 retur ...

  9. 【 Gym - 101138J 】Valentina and the Gift Tree(树链剖分)

    BUPT2017 wintertraining(15) 4 D Gym - 101138J 数据 题意 n个节点的一棵树,每个节点的权值为g,q个询问,树上的节点U-V,求U到V的路径的最大子段和. ...

  10. BZOJ 3612: [Heoi2014]平衡

    3612: [Heoi2014]平衡 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 283  Solved: 219[Submit][Status][ ...