标签:info 图片 string 二进制文件 flush 好的 简单实现 int ber
编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:
此次的代码要求实现类似Linux下cp的功能。我们需要注意的以及考虑的细节有以下几点:
程序读取命令行输入的三个参数,参数为“-tx”或“-xt”,否则报错并终止运行。
当参数为“-tx”时,读取txt文件中的数字,转换为二进制后写入bin文件
当参数为“-xt”时,读取bin文件中的二进制数字,转换为十进制后写入txt文件
在课上,老师曾数次提醒我们注意Java语言的main方法:public static void main(String args[])
。我们命令行中的字符会自动存储在一个名为args的字符类型数组中,且从args[0]开始存储。如图所示:
。
(注意??:这里老师提到过,java和C语言有所区分。在运行时,java会直接从文件名后的参数开始存储,而C语言则会从文件名开始存储)
因此,我们只需要读取args的值,便可以实现“-tx”
和“-xt”
值的判断。
实现十进制到二进制的转化其实就是将笔头上的方法转化成程序语言,这里我选择使用除二取余法,即除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之前,实现余数的倒序排列。
}
}
实现二进制到十进制的转化更加简单,通过查阅API文档,我们发现Integer.parseInt
方法就可以实现这一操作。
事实上打从一开始我就决定将文件中的数字用数据流读成一个数字字符串,但由于相关的知识理解不透彻,教材中对数据流的介绍我一直认为有点语焉不详,在反复修改代码n次后我决定放弃数据流(或许是我的理解有本质上的错误?还要以后细细研究一番),采用缓冲流来进行文件操作,最后经过一些小调试,成功实现了文件操作。
首先建立一个写有20175308的a.txt和一个空的b.bin文件
运行代码后检查b.bin,内容正确
将b.bin内容换成一串计算好的二进制数1001100010000100001010011 并运行代码
运行程序后打开a.txt,文件中内容正确
标签:info 图片 string 二进制文件 flush 好的 简单实现 int ber
原文地址:https://www.cnblogs.com/darklord0604/p/10771531.html