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. IP防护等级简介

    IP(INGRESS PROTECTION)防护等级系统是由IEC(INTERNATIONAL ELECTROTECHNICAL COMMISSION)所起草,将电器依其防尘防湿气之特性加以分级 IP ...

  2. ecshop 商品属性显示方法

    功能:在商品列表上,点击放大镜,显示商品所有属性以及其价格,效果如下: 方法/步骤: 1.编辑\admin\templates\goods_list.htm 模板,在 <!-- 商品搜索 --& ...

  3. 一入OI深似海 4 —— 纪念我最后一次PJ(中)

    不知道怎么回事,直到比赛前10分钟才放我们进考场. 考场在体育馆里面,很大很壮观. 我匆匆忙忙地找到位子,屁股还没坐热,被老师告知不能带水. what?! 于是我只好把水放在统一放私人物品的地方. 电 ...

  4. [转帖]EXPDP dumpfile和parallel的关系

    http://blog.itpub.net/28602568/viewspace-2133375/ 转帖 EXPDP 里面 parallel 与 dumpfile 里面的文件数的关系. 但是我这里有一 ...

  5. Django(八)下:Model操作和Form操作、序列化操作

    二.Form操作 一般会创建forms.py文件,单独存放form模块. Form 专门做数据验证,而且非常强大.有以下两个插件: fields :验证(肯定会用的) widgets:生成HTML(有 ...

  6. 详解volatile 关键字与内存可见性

    先来看一个例子: public class VolatileTest {            public static void main(String[] args) {           T ...

  7. hdu-4612(无向图缩点+树的直径)

    题意:给你n个点和m条边的无向图,问你如果多加一条边的话,那么这个图最少的桥是什么 解题思路:无向图缩点和树的直径,用并查集缩点: #include<iostream> #include& ...

  8. Linux keepalived+nginx实现主从模式

    双机高可用方法目前分为两种: 主从模式:一台主服务器和一台从服务器,当配置了虚拟vip的主服务器发送故障时,从服务器将自动接管虚拟ip,服务将不会中断.但主服务器不出现故障的时候,从服务器永远处于浪费 ...

  9. 【转】Java 线程池

    什么是线程池? 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程.线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求.然而, ...

  10. maven settings.xml--需要保存到用户/.m2文件夹下

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...