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. WEB前端学习资源清单

    常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...

  2. 升鲜宝V2.0_生鲜配送行业,对生鲜配送系统开发与实施的深度对比与思考_升鲜宝生鲜配送系统_15382353715_余东升

               升鲜宝V2.0_生鲜配送行业,对生鲜配送系统开发与实施的深度对比与思考_升鲜宝生鲜配送系统_15382353715_余东升 笔者从事生鲜配送软件开发接近10年,前前后后研究了很多 ...

  3. git stash解决代码merge出错

    最近在使用git提交代码时,遇到一个问题,就是我修改了几个文件的代码,然后又想把自己代码库里面的代码更新到最新版本,然后不出所料,代码冲突了!作为一个喜欢解决问题的程序员,怎么会被这样的问题所困住呢? ...

  4. 如何禁止chrome浏览器http自动转成https 【转】

    Chrome 浏览器 地址栏中输入 chrome://net-internals/#hsts 在 Delete domain security policies 中输入项目的域名,并 Delete 删 ...

  5. python接口自动化-json数据处理

    前言 有些post的请求参数是json格式的,需要导入json模块进行处理,json是一种数据交换格式,独立于编程语言 一般常见的接口返回数据也是json格式的,我们在做判断的时候,往往只需要提取其中 ...

  6. centos7下安装docker(dockerfile常用的指令)

    FROM:指定ase镜像 MAINTAINER:设置镜像作者,可以是任意字符 COPY:将文件从build  context复制到镜像.支持两种形式:1.COPY src dest 2.COPY [“ ...

  7. 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?

    起因 这是知识星球内的一个网友提出的,按理说ASP.NET MVC中一个视图只能绑定一个模型(Model),在视图顶部标识如下: @model IEnumerable<FineUICore.Ex ...

  8. 我一个二本大学是如何拿到百度、网易大厂offer的!

    本文首发在我的微信公众号“程序员柯南”,底部附有二维码.原文阅读 01终于步入大学 我既没有跨过山和大海,也没有穿过人山人海,我就是我,一个2020届普通本科大学生.身为读者的你,关注了我,自然是想获 ...

  9. 【递归】hex2dec

    自己捉摸了好久,由于不熟悉. #include <stdio.h> int dec2hex(char *p); int base; int num; int main(void) { ch ...

  10. arale-cookie 使用

    https://www.npmjs.com/package/arale-cookie  arale-cookie 使用 define(function() { var Cookie = require ...