编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能

时间:2023-03-09 18:03:34
编写MyCP.java 实现类似Linux下cp  XXX1 XXX2的功能
  • 题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能
    • 要求:MyCP支持两个参数:
      • java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
      • java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)

  • 前置知识
    • cp命令:
      • 作用:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
      • 参数:cp指令根据参数选择功能

  • 具体实现

    • 产品代码:
    import java.io.*;
    
     public class MyCP {
    public static void main(String args[]) {
    String choose = args[0];
    //获得第一个参数
    String File1 = args[1];
    //获得第二个参数:文件名
    String File2 = args[2];
    //获得第三个参数:文件名
    File sourceFile = new File(File1);
    //读取的文件
    File targetFile = new File(File2);
    //写入的文件
    int ch = 0;
    String result = "";
    //转换结果
    if (choose.equals("-tx")) {
    ch = 1;
    }
    else if (choose.equals("-xt")) {
    ch = 2;
    }
    //参数判断
    else {
    System.out.println("输入参数错误!");
    System.exit(0);
    }
    //如果参数输入错误,退出程序
    try {
    FileWriter out = new FileWriter(targetFile);
    //指向目的地的输出流
    FileReader in = new FileReader(sourceFile);
    //指向源的输入流
    BufferedReader infile = new BufferedReader(in);
    BufferedWriter outfile = new BufferedWriter(out);
    //缓冲流
    String number = infile.readLine();
    if (ch == 1) {
    int n, temp = Integer.parseInt(number);
    for (int i = temp; i > 0; i = i / 2) {
    if (i % 2 == 0)
    n = 0;
    else
    n = 1;
    result = n + result;
    }
    } else if (ch == 2) {
    result = Integer.valueOf(number, 2).toString();
    }
    outfile.write(result);
    outfile.flush();
    outfile.close();
    } catch (IOException e) {
    System.out.println("Error " + e);
    }
    }

}


--- - 运行截图
- 参数为-tx时
![](https://img2018.cnblogs.com/blog/1592121/201904/1592121-20190427220104652-217300836.png)
![](https://img2018.cnblogs.com/blog/1592121/201904/1592121-20190427220110341-554248219.png) - 参数为-xt时
![](https://img2018.cnblogs.com/blog/1592121/201904/1592121-20190427220123396-349756880.png)
![](https://img2018.cnblogs.com/blog/1592121/201904/1592121-20190427220127985-766980837.png) --- - [码云托管链接](https://gitee.com/fzlzc/java2019/blob/master/src/MyCP.java)