一、任务详情
编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:
- java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
- java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
二、知识拓展(java中的进制转换)
十进制转成十六进制:
***Integer.toHexString(int i) ***
十进制转成八进制:
***Integer.toOctalString(int i) ***
十进制转成二进制:
***Integer.toBinaryString(int i) ***
十六进制转成十进制 :
***Integer.valueOf("FFFF",16).toString() ***
八进制转成十进制:
Integer.valueOf("876",8).toString()
二进制转十进制:
Integer.valueOf("0101",2).toString()
三、程序代码(仅完成十进制转二进制)
import java.io.*;
public class MyCP{
public static void main(String[] args) throws IOException {
String file = "E:/zzmjava/shuzi.txt";
String s =dataInputStream(file);//输入十进制文本
FileOutputStream fps = new FileOutputStream("E:/zzmjava/shuzi2.txt");//将十进制转为二进制并保存为文本
fps.write(s.getBytes());
fps.close();
}
//十进制转二进制
public static String dataInputStream(String file) throws IOException {
File file2 = new File(file);
DataInputStream dls = new DataInputStream(new FileInputStream(file2));
StringBuilder byData = new StringBuilder();
byte b = 0;
for(int i=0;i<file2.length();i++) {//返回一个字符串二进制的无符号整数
b = dls.readByte();//按照字节读取
String str = Integer.toBinaryString(b);
if(str.length() == 1) {
str = "0"+str;
}
byData.append(str.toUpperCase());
}
return byData.toString();
}
}
四、运行截图
五、码云链接
https://gitee.com/zzm-zcc/zhang_zhi_min/blob/master/MyCP.java