博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第九周学习总结
阅读量:5136 次
发布时间:2019-06-13

本文共 2600 字,大约阅读时间需要 8 分钟。

一、作业要求

编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:

  • java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件

  • java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)

二、题目分析

1.输入与输出

  • 读取文件内容并将更改后的内容输入到指定文件中——运用流来实现

2.判断

  • 判断读入的文件内容是二进制还是十进制——利用一个变量来存入输入的参数“-xt”或“-tx”

3.进制转换

  • 利用函数Integer.toBinaryString使得十进制转换为二进制,利用函数Integer.valueOf使得二进制转换为十进制

三、代码

import java.io.*;public class MyCP {    public static void main(String[] args) throws IOException {        String d=args[0];//获得第一个参数        String File1=args[1];//获得第二个参数:文件名        String File2=args[2];//获得第三个参数:文件名        File source = new File(File1);//读取的文件        File target = new File(File2);//写入的文件        if(d.equals("-tx")){            FileReader reader = new FileReader(source);            FileWriter writer = new FileWriter(target);            tx(reader, writer);        }        if(d.equals("-xt")){            FileReader reader = new FileReader(target);            FileWriter writer = new FileWriter(source);            xt(reader, writer);        }    }    //十转二    public static void tx(FileReader reader, FileWriter writer) {            try (FileReader In = reader; FileWriter Out = writer) {                char[] number = new char[1];                String result = null;                String two = null;                while ((In.read(number)) != -1) {//读取一个十进制数字                    int number1 = (int) number[0];//字符到数字强制转换                    result = "";                    two = Integer.toBinaryString(number1);                    while (two.length() < 4) {//十进制单个数字的范围为0-9,对应二进制表示范围为0000-1001,为下次转换为十进制方便,将其统一补充为四个数字                        result = '0' + result;                    }                }                result = result + two;                Out.write(result);//FileWriter的write()方法保存得到的二进制到文件中            } catch (IOException e1) {                e1.printStackTrace();            }        }    //二转十    public static void xt(FileReader reader, FileWriter writer) {        try (FileReader In = reader; FileWriter Out = writer) {            char[] number = new char[4];            char ch;            while((In.read(number))!=-1) {                String result="";                In.read();                for(int i=0;i<4;i++){                result=result+number[i];                }                int ten=Integer.valueOf(result,2);//Integer.valueOf()方法将二进制转为十进制                ch = (char)ten;                Out.write(ch);//FileWriter的write()方法保存得到的十进制            }        }catch (IOException e) {            e.printStackTrace();        }    }    }

四、测试结果

1594162-20190428225356320-1333590069.png

1594162-20190428230254270-752135588.png
1594162-20190428230318332-906001306.png

转载于:https://www.cnblogs.com/wxhblogs/p/10787620.html

你可能感兴趣的文章
文本隐藏(图片代替文字)
查看>>
java面试题
查看>>
提高码力专题(未完待续)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
同步代码时忽略maven项目 target目录
查看>>
Oracle中包的创建
查看>>
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
STM32F10x_RTC秒中断
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>