编程实现类似Linux下cp功能
MyCP的代码实现
一、题目要求:
编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:
- java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
- java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
二、设计思路
此次的代码要求实现类似Linux下cp的功能。我们需要注意的以及考虑的细节有以下几点:
- 源文件和目标文件分属不同的文件形式,且由命令行提供。
- 程序可以接受“-tx”或“-xt”参数来选择转换形式(不需要实现类似cp命令的其他参数)
3.文本文件中内容为十进制数字(意味着没有其他形式的字符) - 如何简单实现二进制与十进制的相互转换
1.伪代码实现
程序读取命令行输入的三个参数,参数为“-tx”或“-xt”,否则报错并终止运行。
当参数为“-tx”时,读取txt文件中的数字,转换为二进制后写入bin文件
当参数为“-xt”时,读取bin文件中的二进制数字,转换为十进制后写入txt文件
2.实现读取命令行参数
在课上,老师曾数次提醒我们注意Java语言的main方法:public static void main(String args[]) 。我们命令行中的字符会自动存储在一个名为args的字符类型数组中,且从args[0]开始存储。如图所示:

。
(注意⚠️:这里老师提到过,java和C语言有所区分。在运行时,java会直接从文件名后的参数开始存储,而C语言则会从文件名开始存储)
因此,我们只需要读取args的值,便可以实现“-tx”和“-xt”值的判断。
3.实现十进制到二进制的转化
实现十进制到二进制的转化其实就是将笔头上的方法转化成程序语言,这里我选择使用除二取余法,即除k取余法,主要用于将十进制的数转化为k进制。下图摘自百度百科:

代码实现为:
int sum;
for (int i = number; i >= 1; i = i / 2) {
if (i % 2 == 0) {
sum = 0;
} else {
sum = 1;
}
result = sum + result;//不断让新计算的sum值置于result之前,实现余数的倒序排列。(result为字符串类型)
}
}
4.实现二进制到十进制的转化
实现二进制到十进制的转化更加简单,通过查阅API文档,我们发现Integer.parseInt方法就可以实现这一操作。

5.读入和写入文件
事实上打从一开始我就决定将文件中的数字用数据流读成一个数字字符串,但由于相关的知识理解不透彻,教材中对数据流的介绍我一直认为有点语焉不详,在反复修改代码n次后我决定放弃数据流(或许是我的理解有本质上的错误?还要以后细细研究一番),采用缓冲流来进行文件操作,最后经过一些小调试,成功实现了文件操作。
三、代码截图及运行截图

首先建立一个写有20175308的a.txt和一个空的b.bin文件

运行代码后检查b.bin,内容正确

将b.bin内容换成一串计算好的二进制数1001100010000100001010011 并运行代码

运行程序后打开a.txt,文件中内容正确

四、编程中遇到的问题
- 写入文件时出现文件无法写入的情况
解决:检查代码,忽略了flush()的作用,没有刷出缓冲池中的数据。
编程实现类似Linux下cp功能的更多相关文章
- 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能
题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能 要求:MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十 ...
- 补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能
蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...
- 编程实现类似Linux系统的cp功能
选做题目以及分析 题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文 ...
- 《Linux下cp XXX1 XXX2的功能》的实现
<Linux下cp XXX1 XXX2的功能>的实现 一.题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyC ...
- 20175303 Mycp实现Linux下cp xxx1 xxx2的功能
20175303 Mycp实现Linux下cp xxx1 xxx2的功能 一.题目要求 编写MyCP2.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP2支持两个参数: ja ...
- 学号20175313 《实现Linux下cp XXX1 XXX2的功能(二)》第九周
目录 MyCP2 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.心得体会 十.参考资料 MyCP2 一.题目 ...
- 学号20175313 《实现Linux下cp XXX1 XXX2的功能(一)》第九周
目录 MyCP 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.参考资料 MyCP 一.题目要求 编写MyCP ...
- Linux C编程之一:Linux下c语言的开发环境
---恢复内容开始--- 今天开始根据Linux C编程相关视频的学习所做的笔记,希望能一直坚持下去... 1.开发环境的构成 编辑器:VI: 编译器:选择GNU C/C++编译器gcc: 调试器: ...
- 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)
在网络课程中,有讲到Socket编程,对于tcp讲解的环节,为了加深理解,自己写了Linux下进程Socket通信,在学习的过程中,又接触到了其它的几种方式.记录一下. 管道通信(匿名,有名) 管道通 ...
随机推荐
- elasticsearch6.7 01.入门指南(1)
Elasticsearch 是一个高度可扩展且开源的全文检索和分析引擎.它可以让您快速.近实时地存储.检索以及分析海量数据.它通常用作那些具有复杂搜索功能和需求的应用的底层引擎或者技术. 下面是 El ...
- ECMAScript正则表达式6个最新特性
译者按: 还没学好ES6?ECMAScript 2018已经到来啦! 原文:ECMAScript regular expressions are getting better! 作者: Mathias ...
- lfs(systemv版本)学习笔记-第1页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...
- 自定义jq插件,鼠标悬浮展示图片或者视频放大图,可自定义展示内容
网站项目经常会遇到一些视频或者图片素材的展示功能,那么就需要自己写一个功能,就是在一些列表页面你想要是这个数据的详细内容,弹框在页面某个位置 例如这是视频悬浮展示效果,可自定义自动播放等属性标签 又例 ...
- VUE基于ElementUI搭建的简易单页后台
一.项目链接 GitHub 地址: https://github.com/imxiaoer/ElementUIAdmin 项目演示地址:https://imxiaoer.github.io/Eleme ...
- EventBus结合rxjava2和retrofit2网络获取
依赖: compile 'com.squareup.retrofit2:converter-gson:2.3.0'compile 'com.squareup.retrofit2:retrofit:2. ...
- 利用python中的gensim模块训练和测试word2vec
word2vec的基础知识介绍参考上一篇博客和列举的参考资料. 首先利用安装gensim模块,相关依赖如下,注意版本要一致: Python >= 2.7 (tested with version ...
- Android视屏播放兼容性问题分享
最近产品提了一个紧急需求:webview加载的URL,需要支持视频播放. 为了快速完成需求,功能实现上直接使用系统自带播放器播放视频.由于是自带播放器,需要进行兼容性测试,过程发现了不少问题,这里分享 ...
- 洗礼灵魂,修炼python(55)--爬虫篇—知识补充—RFC 2616 http状态码
不多说直接上状态码表: 状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽 ...
- mysqlreport工具
进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在:而SHOW STATUS输出的报告正是用来计算性能瓶颈的参考数据.mysqlreport不像SHOW STATUS那样简单的罗列数据,而 ...