20175221 MyCP(课下作业,必做)
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()方法探究
20175221 MyCP(课下作业,必做)的更多相关文章
- MyCP(课下作业,必做)
作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...
- 20175316 盛茂淞 MyCP(课下作业,必做)
题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...
- MyCP课下作业
任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...
- 20175333曹雅坤MyCP(课下作业,必做)
MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...
- MyCP(课下作业,必做)
MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2 的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bi ...
- 必做课下作业MyCP
20175227张雪莹 2018-2019-2 <Java程序设计> 必做课下作业MyCP 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支 ...
- 20175314薛勐 MyCP(课下作业,必做)
MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...
- MyCP(课下作业,必做)- 20175218
MyCP(课下作业,必做) 1.任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2 ...
- 20175325 MyCP (课下作业,必做)
20175325 MyCP (课下作业,必做) 一.目录: 题目 设计思路 运行结果 码云链接 二.题目 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两 ...
随机推荐
- 《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统
现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始.今天开始就跟我一起学习如何制作一个精 ...
- PHP制作个人博客-广告位添加与调用 推荐文章数据调取
上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告.博客推荐文章的数据调用. 首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf ...
- element表格添加查看操作
表格代码:黄色部分关键代码 首先看效果: <el-table :data="tableData" border height="480" style=&q ...
- 五一出门必备的手机APP神器 让你瞬间大开眼界
如今我们手机上有各种各样的软件,但是比较实用的又有哪些呢?所以每次大家都会花上很久的时间去查找满意的软件吧!今天就给大家送上一波福利,因为五一小长假就要到来了,说不定大家会使用到呢! 轻颜相机 轻颜相 ...
- android---EventBus的简单使用(一)
是什么: 就是用来发消息通信的 怎么用: 定义事件:(消息体) public class MessageEvent { /* Additional fields if needed */ } 准备订阅 ...
- samba介绍和安装
samba基本介绍 为什么需要samba 早期网络文件数据在不同主机之间传输大都可以使用Ftp完成,不过ftp使用有个小小的问题,它不能让你之间修改主机上的文件.要想修改必须要通过下载——修改——上传 ...
- Java基础系列--03_Java中的方法描述
方法 (1)方法的定义:就是完成特定功能的代码块. 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法. (2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ...
- 消息中间件 MQ
复制粘贴于:https://blog.csdn.net/wqc19920906/article/details/82193316 一.消息中间件相关知识 1.概述 消息队列已经逐渐成为企业IT系统内部 ...
- css实现垂直水平居中的方法
html结构: <div class="box"> <div>垂直居中</div> </div> 方法1:display:flex ...
- 自动化测试(web测试selenium框架)
什么是selenium? 一个用于Web应用程序测试的工具直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safa ...