课下必做MyCP

一、任务详情

编写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

原文地址:https://www.cnblogs.com/zzmzcc/p/10780420.html