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. 面象对象设计原则之一:单一职责原则(Single Responsibility Principle, SRP)

    单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域 ...

  2. [转帖]Nginx的超时keeplive_timeout配置详解

    Nginx的超时keeplive_timeout配置详解 https://blog.csdn.net/weixin_42350212/article/details/81123932   Nginx  ...

  3. 给定一个 hashMap 最终输出最大值的键

    /** * * 类 描 述:机试题: 给定一个 hashMap 最终输出最大值的键 * 作 者: 赵 鹏 * 时 间:2017年7月4日 下午6:51:06 */ public class Test ...

  4. WINFORM 多条件动态查询 通用代码的设计与实现

    经常碰到多条件联合查询的问题,以前的习惯认为很简单总会从头开始设计布局代码,往往一个查询面要费上老半天的功夫,而效果也不咋地.     前段时间做了个相对通用的多条件动态查询面,复用起来还是挺方便的, ...

  5. 关于JavaScript中this的软绑定

    首先,什么是软绑定? 所谓软绑定,是和硬绑定相对应的一个词,在详细解释软绑定之前,我们先来看看硬绑定.在JavaScript中,this的绑定是动态的,在函数被调用的时候绑定,它指向什么完全取决于函数 ...

  6. 什么样的 GitHub 才适合放简历上?

    为什么 GitHub 可以加分? 很多招聘描述上面都会备注 GitHub 是加分项,那么为什么它是加分项呢? 停,如果看到这里你还不知道 GitHub 是什么,可以看一下 Phodal的手记:http ...

  7. 一点点linux系统的学习心得

    我相信你正在阅读本文的时候,可能是因为你渴望学习Linux技术.我想分享一下过去两年中我自己的一些学习经历,希望你能更顺利地成为Linuxer. 两年前在Linux系统的运行和维护方面找到了一份工作( ...

  8. C# TreeView 连续点击 不触发AfterCheck事件

    创建一个类 TreeView2 namespace System.Windows.Forms { public class TreeView2 : TreeView { protected overr ...

  9. POJ1177(扫描线求周长并)

    题意:..求周长并... 解析:参考求面积并 图借鉴自:https://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464876.html 自下而上扫描 ...

  10. (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)

    前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...