MyCP(课下作业,必做)

任务详情

  • 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:
  • - java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件 - java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
  • 提交测试代码和运行结果截图,加上学号水印,提交码云代码链接。 需要提交博客和答辩

设计思路

  • 刚看题目时,理解错了题目的意思,以为是要把一个二进制文件先转换成序列,再输出对应的十进制,最后把序列转换成文件。后来和同学讨论才发现,自己没仔细看题,理解错了方向。

  • 由于太久没使用Linux的操作指令,于是使用 man , cp --help 来了解对应功能
  • 我大概构思了一下,要完成这个实验可能会遇到的一些难点:

  • 如何完成二进制与十进制数字的互相转换
  • 在txt中转化完的数据,怎样写入另一个文件
  • 针对这几个问题,我去查阅了相关资料

  • 十进制转二进制:

  • 二进制转十进制

  • 文件的写入和读取

  • 代码如下

  •  import java.io.*;
    import java.util.Scanner;
    public class MyCP {
    public static void main(String[] args) throws IOException {
    //输入十进制文本
    Scanner scan=new Scanner(System.in);
    String str=scan.nextLine();
    String[]ch=str.split(" ");
    //调用tx方法把文本文件转化为二进制文件
    if(ch[].equals("-tx")){
    FileReader reader = new FileReader("/home/zxj/twoweek/MyCP/testorigin.txt");
    FileWriter writer = new FileWriter("/home/zxj/twoweek/MyCP/testchange.bin");
    tx(reader, writer);
    }
    //用xt方法把二进制文件把转化为文本文件
    if(ch[].equals("-xt")){
    FileReader reader = new FileReader("/home/zxj/twoweek/MyCP/testchange.bin");
    FileWriter writer = new FileWriter("/home/zxj/twoweek/MyCP/testchange2.txt");
    xt(reader, writer);
    }
    }
    public static void tx(FileReader reader, FileWriter writer) {
    try (FileReader In = reader; FileWriter Out = writer) {
    char[] number = new char[];
    while((In.read(number))!=-) {//FileReader的read()方法获取对应的十进制数字
    int number1=(int)number[];
    String result="";
    String totwo=Integer.toBinaryString(number1);//调用Integer.toBinaryString将十进制转为二进制
    for(int i=;i<;i++){//返回一个二进制的无符号整数
    if(i<(-totwo.length())) {
    result = result+'';
    }
    }
    result=result+totwo;
    Out.write(result, , );//FileWriter的write()方法保存得到的二进制
    Out.write(" ");
    }
    }catch (IOException e) {
    e.printStackTrace();
    }
    }
    public static void xt(FileReader reader, FileWriter writer) {
    try (FileReader In = reader; FileWriter Out = writer) {
    char[] number = new char[];
    char[] ch = new char[];
    while((In.read(number))!=-) {
    String result="";
    In.read();//FileReader的read()方法获取对应的8位二进制数字
    for(int i=;i<;i++){
    result=result+number[i];
    }
    int ten=Integer.valueOf(result,);//Integer.valueOf()方法将二进制转为十进制
    ch[]=(char)ten;
    Out.write(ch, , );//FileWriter的write()方法保存得到的十进制
    }
    }catch (IOException e) {
    e.printStackTrace();
    } } }

结果截图

  • 首先在指定路径下创建文本,并在其中输入十进制数字
  • 执行 java MyCP -tx testorigin.txt testchange.bin ,生成含有对应二进制数字的bin文件
  • 查看bin文件内容
  • 再执行 java MyCP -xt testchange.bin testchange2.txt ,将二进制数字再转换回十进制数字,并生成文本文件
  • 问题与解决方法

  • 问题1:

  • 生成的bin文件无法打开查看

  • 问题1解决方法:

  • 我点击选择程序,查找相关应用,但遗憾的是没有合适的应用可以安装来打开bin文件,我只好回到命令行进到vim编辑页面查看。

  • 问题2:

  • 输入命令报错找不到路径文件
  • 问题2解决方法:

  • 这个是自己犯傻了,执行命令之前,没有创建对应的十进制文本文件。所以只要在执行命令前,在指定路径下创建对应的十进制文本文件即可。

码云链接

参考资料

Integer.parseInt(s)与Integer.valueOf(s)的区别详解

java源码Integer类toBinaryString()方法探究

java FileReader和FileWriter

20175221 MyCP(课下作业,必做)的更多相关文章

  1. MyCP(课下作业,必做)

    作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...

  2. 20175316 盛茂淞 MyCP(课下作业,必做)

    题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...

  3. MyCP课下作业

    任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...

  4. 20175333曹雅坤MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...

  5. MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2 的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bi ...

  6. 必做课下作业MyCP

    20175227张雪莹 2018-2019-2 <Java程序设计> 必做课下作业MyCP 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支 ...

  7. 20175314薛勐 MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...

  8. MyCP(课下作业,必做)- 20175218

    MyCP(课下作业,必做) 1.任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2 ...

  9. 20175325 MyCP (课下作业,必做)

    20175325 MyCP (课下作业,必做) 一.目录: 题目 设计思路 运行结果 码云链接 二.题目 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两 ...

随机推荐

  1. Source-Based XSS Test Cases

    Single Reflection Case 01 - Direct URL Injection (no parameter) payload: https://brutelogic.com.br/x ...

  2. ArcGIS API for JavaScript与 npm

    在4.7版本中,不仅增加了WebGL的渲染支持(渲染前端速度加快,渲染量也加大).增强了ES6中的Promises语法支持,还支持了npm管理及webpack打包,实属喜讯. “意味着可以不经过esr ...

  3. Android为TV端助力转载:码农小阿飞(SpannableString)

    用SpannableString打造绚丽多彩的文本显示效果 引语 TeXtView大家应该都不陌生,文本展示控件嘛! 就用TextView显示普普通通的文本,OK,很简单,Android入门的都会,没 ...

  4. java:合并两个排序的链表(递归+非递归)

    //采用不带头结点的链表 非递归实现 public static ListNode merge(ListNode list1,ListNode list2){ if(list1==null) retu ...

  5. PostgreSQL10.1 linux 编译安装

    一 安装准备 1.首先从官网下载PostgreSQL压缩包(也可以使用yum安装),我们这里使用的是10.1的版本 2.将文件上传到linux服务区目录(我们这里放在/root 中) 3.解压缩 ta ...

  6. JS的正则表达式及回文

    function palindrome(str) { str = str.replace(/\s/g,"").replace(/[^a-zA-Z0-9]/g,"" ...

  7. kali权限提升之配置不当提权与WCE

    kali权限提升之配置不当提权与WCE 1.利用配置不当提权 2.WCE 3.其他提权 一.利用配置不当提权 与漏洞提权相比更常用的方法 在大部分企业环境下,会有相应的补丁更新策略,因此难以通过相应漏 ...

  8. Fiddler分享

    链接:https://pan.baidu.com/s/162YmGb7-aUZ6xDf8eRfgpw  密码:j6er

  9. June. 25th 2018, Week 26th. Monday

    Change in all things is sweet. 有改变就会有美好. From Aristole. Change is always good, but embracing change ...

  10. BigDecimal 在for循环中相加注意事项

    public static void main(String[] args) { BigDecimal bigDecimal = new BigDecimal(1); for (int i = 0; ...