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. python3_字符串

    一.字符串的表示 >>> s = "narjaja never give up" #字符串的创建和初始化 >>> s = 'narjaja ne ...

  2. 软件工程_5th weeks

    从周五开始经历了清明小长假,周六.周日和周一都处于假期状态,因此对于上篇博客的评论回复的很迟,而这周的工作做的也不多. 1.爆打小组 4.5日站立会议 时间:2016.4.5 15:00-15:34 ...

  3. 【Java】 枚举类

    如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...

  4. 如何在Vue项目中引入jQuery?

    假设你的项目由vue-cli初始化 (e.g. vue init webpack my-project). 在你的vue项目目录下执行: npm install jquery --save-dev 打 ...

  5. 使用nexus搭建maven私服教程详解

    私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视.Nexus是常用的私用Maven服务器,一般是公司内部使用.下载地址是http://www.sona ...

  6. 删除文件,copy文件bat

    由于IntelliJ IDEA Build Artifacts速度实在是无法忍受,特整理了一个bat脚本方便maven install后更新jar文件到部署包 del /F /S /Q D:\Idea ...

  7. Mercurial(Hg)基本操作

    Mercurial(Hg)基本操作 来源 https://www.cnblogs.com/gb2013/archive/2012/05/18/Mercurial_Basic.html Mercuria ...

  8. 【BZOJ2246】[SDOI2011]迷宫探险(搜索,动态规划)

    [BZOJ2246][SDOI2011]迷宫探险(搜索,动态规划) 题面 BZOJ 洛谷 题解 乍一看似乎是可以求出每个东西是陷阱的概率,然而会发现前面走过的陷阱是不是陷阱实际上是会对当前状态产生影响 ...

  9. 洛谷 P1691 有重复元素的排列问题 解题报告

    P1691 有重复元素的排列问题 题目描述 设\(R={r_1,r_2,--,r_n}\)是要进行排列的\(n\)个元素.其中元素\(r_1,r_2,--,r_n\)可能相同.使设计一个算法,列出\( ...

  10. babel的使用及babel与gulp结合工作流

    Babel 通过语法转换器支持最新版本的 JavaScript . 它有非常多的插件,这些插件能够允许我们立刻使用新语法,无需等待浏览器支持. 那我们怎么使用babel呢? 首先我们来了解babel基 ...