zoukankan      html  css  js  c++  java
  • 第九周学习总结

    一、作业要求

    编写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();
            }
    
        }    
    
    }
    

    四、测试结果



  • 相关阅读:
    storm中的Scheduler
    开启flume的远程调试功能
    修改flume源码,使其HTTPSource具备访问路径功能
    非功能测试——效率测试
    python100例
    awk命令
    shell正则表达式
    python的垃圾回收机制
    冯-诺伊曼体系结构
    jmeter读取文件内容做变量
  • 原文地址:https://www.cnblogs.com/wxhblogs/p/10787620.html
Copyright © 2011-2022 走看看