MyCP(课下作业,必做)

要求

编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:
java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

    • 思路
      题目要求实现文件的复制过程,且能够支持两个参数:-tx和-xt;
      把内容为十进制数字的文本文件转化为二进制文件,所以只需要考虑由数字字符构成的文本文档;
      十进制数字单个数字最大是9,用二进制数字表示需要4位,所以需要把文本文件中的十进制数字的每一位都补齐为四位二进制数。

      • 代码

      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 ReadLenth=0;
      if (choose.equals("-tx")){
      ReadLenth=1;
      }//如果参数是-tx,每次读取的长度设置为1
      else if(choose.equals("-xt")) {
      ReadLenth=4;
      }//如果参数是-xt,每次读取的长度设置为4
      else{
      System.out.println("输入参数错误!");
      System.exit(0);
      }//如果参数输入错误的话就退出程序
      char c[] =new char[ReadLenth];//定义字符数组
      try{
      Writer out = new FileWriter(targetFile);//指向目的地的输出流
      Reader in = new FileReader(sourceFile);//指向源的输入流
      int n = -1;
      while((n=in.read(c,0,ReadLenth))!=-1) {
      //当文件中还有信息时,继续读取字符到字符数组c中,n是返回的实际读取的字符的个数
      String number="";
      if(ReadLenth==1){
      number=Integer.toBinaryString((int)c[0]-48);
      //把读取到的十进制数转化为二进制数
      while(number.length()<4){
      number="0"+number;//把二进制数扩充为4位
      }
      out.write(number);//写入目标文件
      }
      else if(ReadLenth==4){
      for(int i=0;i<n;i++){
      number=number+c[i];//读取4位的二进制数
      }
      number=Integer.valueOf(number,2).toString();//二进制数转化十进制,再转为字符串形式
      out.write(number);//写入目标文件
      }
      }
      out.flush();
      out.close();
      }
      catch(IOException e) {
      System.out.println("Error "+e);
      }
      }
      }
  • 由于我个人的笔记本电脑主板短路了,短时间内无法修好,所以只能用同学的电脑测试并调试代码。目前只能提交这么多,望老师理解!!!

20175315Mycp的更多相关文章

随机推荐

  1. nginx安装,启动亲测有效

    一:安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel 二:安装PCRE,让 N ...

  2. JQuery滚动分页查询功能

    //获取滚动条的高度 function getScrollTop() { var scrollTop = 0; if (document.documentElement && docu ...

  3. 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(三)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com VGGNet在2014年ImageNet图像分类任务竞赛中有出色的表现.网络结构如下图所示: 同样的, ...

  4. 【MySQL 读书笔记】当我们在使用索引的时候我们在做什么

    我记得之前博客我也写过关于索引使用的文章,但是并不全面,这次尽量针对重点铺全面一点. 因为索引是数据引擎层的结构我们只针对最常见使用的 Innodb 使用的 B+Tree 搜索树结构进行介绍. 每一个 ...

  5. springboot使用RestHighLevelClient批量插入

    1.引入maven(注意版本要一致) <dependency> <groupId>org.springframework.boot</groupId> <ar ...

  6. Lodop提示BarCode Type(ena13)Invalid!

    前段时间遇到过一个奇怪的问题,就是代码里本身都是ENA13大写,却提示条码类型无效,而且进入打印设计后,选中打印项,条码类型变成了code39,但是实际是还有条码类型参数都是正确的,代码看上去没有问题 ...

  7. Vue接口异常时处理

    一般接口只会对后台返回的json状态进行判断处理,当后台异常时,我们可以使用catch来对这些异常进行同样的报错处理. 例如: 上面显示代码例子中test为一个接口,json为后台正常返回的数据对象, ...

  8. Comet OJ Contest #2

    A:暴力,显然每两次至少翻一倍. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf ...

  9. Git——开启区分大小写

    前言 默认情况下git是忽略区分大小写的,多人合作的情况下不规范很容易造成问题,所以开启区分大小写. 步骤 开启 全局开启 git config --global core.ignorecase fa ...

  10. "大概能给你的磕盐增加一点幸福感✈"-[那些年的矫情]

    #--------------------------------------------------------------------------------------------------- ...