目录

  • MyCP

    • 一、题目要求
    • 二、题目理解
    • 三、需求分析
    • 四、设计思路
    • 五、伪代码分析
    • 六、代码链接
    • 七、代码实现过程中遇到的问题
    • 八、运行结果截图
    • 九、参考资料

MyCP

一、题目要求

编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:

  • java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
  • java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)

二、题目理解

Linux下cp XXX1 XXX2的功能:在命令行输入man cp进行查看

三、需求分析

  • 支持两个参数

    • -tx参数:将文本文件(十进制数)转化为二进制文件
    • -xt参数:将二进制文件转化为文本文件(十进制数)
  • 支持在命令行中输入三个字符串
    • 第一个字符串:文件的转化形式
    • 第二个字符串:源文件
    • 第三个字符串:目标文件
  • 将二进制数转化为十进制数
  • 将十进制数转化为二进制数

四、设计思路

  • 问题1:如何实现在命令行中输入参数?

教材182页Example8_14.java中略微提到一点点。

  • 解决方法:arges[]数组的使用
  • 问题2:如何实现二进制文件与文本文件的相互转化,转化的形式是什么?
  • 转化形式:
    • 二进制文件转文本文件:十进制数一位最多占用4bit,所以依次读取二进制文件的内容,每次以4bit为标准,将每4位二进制转化为一位十进制数输入到文本文件中。
    • 文本文件转二进制文件:与上面的想法类似,依次读取文本文件的内容,每次以1bit为标准,将每位十进制数转化为4位二进制数输入到二进制文件中。
  • 转化过程:
    • 二进制数转十进制数:

    • 十进制数转二进制数:

五、伪代码分析

  • 读取命令行输入的3个参数:arges[0]代表转化形式,arges[1]代表源文件,arges[2]代表目标文件。
  • 当args[0]是“-tx”,每次读取文件名为args[1]文本文件中的1个字符,把它转为4位二进制数字写入到文件名为args[2]的二进制文件中去,直到文本文件中的所有字符读取完毕。
  • 当args[0]是“-xt”,每次读取文件名为args[1]二进制文件中的4个字符,把它转为1位十进制数写入到文件名为args[2]的十进制文件中去,直到二进制文件中的所有字符读取完毕。

六、代码链接

七、代码实现过程中遇到的问题

  • 问题1:读取长度readLength没有初始化。

  • 解决方法:以前用C语言习惯了变量不进行初始化,以为没有问题,看到报错后,我还是惯常的没有考虑起初的初始化问题,而是一直在找程序中为什么readLength没有被赋值的问题。找了好久感觉没有bug啊,然后就死马当作活马医的让起初的readLength=0,进行了初始化,结果不报错了。看来java对于成员变量的初始化还是严格控制的。
  • 问题2:程序编译时出现“编码GBK的不可映射字符”报错

  • 我网上找了好多解决方法都没有效果,所以这个问题到现在都没有解决,所以后面我就在虚拟机上进行的编译运行。
  • 问题3:直接将字符串与给定字符串常量进行比较,忘记应该使用equals方法,导致程序直接输出“Error”,然后退出。

  • 解决方法:调用equals方法进行字符串之间的比较

  • 问题4:将String num=""放在循环读取的外面,导致num叠加的上一次循环转化成的十进制数,产生输入溢出

  • 解决方法:将String num=""放在while循环的里面,使每一次要进行数据读取时num都是从空开始。
  • 注意:
    • 调用public static String toBinaryString(int i)方法进行十进制数转二进制数时,输入的参数的整数型,所以应该将字符型ch[0]-'0',将其字符转化为整数。
    • 调用public static int parseInt(String s,int radix)方法进行二进制转十进制数时,返回的时int,所以应该在后面加上"",使其转化为String型,后赋值给num。

八、运行结果截图



九、参考资料

  • 《Java2实用教程(第五版)》
  • arges[]数组的使用
  • 朱文远学长博客
  • JDKTM 6 Documentation

转载于:https://www.cnblogs.com/xiannvyeye/p/10766005.html

学号20175313 《实现Linux下cp XXX1 XXX2的功能(一)》第九周相关推荐

  1. linux java -cp lt; .txt_补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能...

    蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...

  2. linux按照学号对文件进行排序,学号20175313 《实现Linux下Sort -t : -k 2功能》第十二周...

    一.题目要求 实现Linux下Sort -t : -k 2的功能 二.题目理解 -t 分隔符,将每一行数据按照该选项指定的分隔符分成多个域.默认情况下是使用tab键或者空格符来分割的. -k 指定用哪 ...

  3. linux怎么设置自动缩进,配置Linux下vim自动缩进等功能

    从终端打开配置文件: vim ~/.vimrc 添加如下代码: set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoindent set ...

  4. linux下cp复制目录时排除某些目录的方法分享,Linux 下复制(cp)目录时排除一个或者多个目录的方法...

    cp 貌似没有排除目录的功能,可以使用 rsync 命令来实现了,如: [案例] /home/52php目录里面有data目录,data目录里面有 a.b.c.d.e 五个目录,现在要把data目录里 ...

  5. Linux下qt实现个人资源管理功能:记事本,图片浏览,网络聊天,数据库管理

    Linux下qt实现个人资源管理功能:记事本,图片浏览,网络聊天,数据库管理 实验内容和环境:(包括软件平台和硬件平台) QT5.14.1 Ubuntu操作系统 实验内容及步骤 (含源程序): 用QT ...

  6. linux下java程序实现重启功能

    今天有个需求要实现java程序重启的功能,类似界面上有个重启按钮点击一下实现程序重启. 一开始网上找了一些方法,都不能实现自己重启,类似新建进程之类的nohup &,ProcessBuilde ...

  7. Linux下cp命令 -f无效的解决方法

    关于Linux的拷贝命令我们都知道cp的参数 -f的意思是: -f, --force                  if an existing destination file cannot b ...

  8. Linux下cp和scp的详细说明及其他们的区别

    一.说明 cp:是在同一个linux系统上,在不同的目录之间复制文件: scp:是在不同linux系统之间来回复制文件: 二.cp 用法 单个文件复制: cp   源文件   目标路径  ~~从原路径 ...

  9. linux下cp -b,Linux下cp的命令解释

    今天带领 各位看官,学习一下cp的命令,一般看到cp命令会一个反应是拷贝,相当于windows下的复制.其实在真正的实际应用中,避免"XXX攻城狮"们在修改重要文件出现改坏文件的情 ...

最新文章

  1. 一文告诉你,为什么要研究JVM原理
  2. 【Python】青少年蓝桥杯_每日一题_7.03_输出符合要求的字母
  3. 学生电脑哪个牌子好_常亮补光灯哪个牌子好服务至上
  4. 西游记里学化学,请收下我的膝盖~ | 今日最佳
  5. TCP/IP完整的基础介绍
  6. 【计算机科学基础】电子计算机抽象层次
  7. Java中4种引用类型笔记
  8. 小米实现隔空充电技术;程序员离职小技巧;GitLab 涨价|开发者周刊
  9. 2014清华计算机系直博名单,2014年清华大学外校推免名单.pdf
  10. 2021-07-03图标,选择框
  11. 怎样开发自己的Telegram Bot
  12. win10录屏_win10自带的录屏软件好用!!!
  13. 原子的波尔模型、能量量子化、光电效应、光谱实验、量子态、角动量
  14. dhl软件_DHL的完整形式是什么?
  15. 电大计算机毕业论文任务书范文,广播电视大学毕业设计任务书表格.doc
  16. 南充十中高考2021成绩查询,2021年南充高考状元名单公布,南充高考状元学校资料及最高分...
  17. p-n结原理1:p-n结的形成和能带
  18. python字符串方法replace_Python字符串的方法
  19. 互联网晚报 | 06月30日 星期四 |​ 开课吧回应停缴员工社保;苹果5G基带芯片研发失败;上海应届硕士毕业生可直接落户...
  20. wps公式编辑器下载 WPS2016如何插入书签,很好玩哦!

热门文章

  1. pythonfopen_Python之文件读写详解
  2. 嵌入式开发笔记-存储控制器
  3. html如何让边框变圆,CSS怎样做出自适应圆形边框?
  4. app获取个人信息是否合法_APP隐私合规介绍和实施方案
  5. php 最大数字,PHP 计算至少是其他数字两倍的最大数的实现代码
  6. mysql 写锁需要等待读锁释放吗_Mysql实战45讲笔记:5、全局锁和表锁
  7. i2c通信 msp430g2553_请教 AD7150 + MSP430G2553 i2C通讯问题该如何编码??
  8. 算法设计与分析 0 算法与性能:GCD与冒泡排序
  9. Verilog初级教程(15)Verilog中的阻塞与非阻塞语句
  10. 【 MATLAB 】xcorr 函数介绍(互相关)简介