• 20155321 2016-2017-2《Java程序设计》课堂实践项目2


    20155321 2016-2017-2《Java程序设计》课堂实践项目2

    实践内容

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

    1. java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
    2. java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
      提交测试代码和运行结果截图,加上学号水印,提交码云代码链接

    代码部分

    • MyCP部分
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    
    public class MyCP {
    
        public static void main(String[] args) throws IOException {
            Scanner scan=new Scanner(System.in);
            String str=scan.nextLine();
            String[]Nstr=str.split(" ");
    
    
            if(Nstr[0].equals("-tx"))
            {
                FileReader reader = new FileReader(Nstr[1]);
                FileWriter writer = new FileWriter(Nstr[2]);
                CharUtiltx.dump(reader, writer);
            }
    
            if(Nstr[0].equals("-xt"))
            {
                FileReader reader = new FileReader(Nstr[1]);
                FileWriter writer = new FileWriter(Nstr[2]);
                CharUtilxt.dump(reader, writer);
            }
    
        }
    }
    
    
    • 二进制文件转文本文件
    import java.io.*;
    
    public class CharUtiltx {
        public static void dump(Reader src, Writer dest) throws IOException {
            try(Reader input = src; Writer output = dest) {
                char[] data = new char[1];
                while((input.read(data)) != -1) {
                    int da=(int)data[0];
                    String str1="";
                    String str=Integer.toBinaryString(da);
                    for(int i=0;i<8;i++)
                    {
                        if(i<(8-str.length()))str1+='0';
    
                    }
                    str1+=str;
                    output.write(str1, 0, 8);
                    output.write(" ");
                }
            }
        }
    }
    
    • 文本文件转二进制文件
    import java.io.*;
    
    public class CharUtilxt {
        public static void dump(Reader src, Writer dest) throws IOException {
            try(Reader input = src; Writer output = dest) {
                char[] data = new char[8];
                char []ch = new char[1];
    
                while((input.read(data)) != -1) {
                    String str="";
                    for(int i=0;i<8;i++)
                    {
                        str+=data[i];
                    }
                    int ten=Integer.valueOf(str,2);
                    ch[0]=(char)ten;
                    output.write(ch, 0, 1);
                    output.write(" ");
                }
            }
        }
    }
    

    实验截图

    代码中所遇到的问题

    • 问题:不知道如何输入命令使程序知道该执行的是文本文件转为二进制文件还是二进制文件转为文本文件?

    • 解决方案:利用数组把输入的三个字符串存储下来,字符串之间以空格符作为分割,实现方式用到了以往课堂上学习到的split的方法完成即可

  • 相关阅读:
    English Voice of <<Cups>>
    【线段树】奶牛排队(USACO 2007 January Gold)
    【线段树】买水果
    【线段树】卫星覆盖(NOI97)-矩阵切割
    插入排序 (Insertion Sort)
    选择排序 (Selection Sort)
    springboot整合redis
    redis入门及相关API
    mycat配置文件的详细介绍
    redis常用命令
  • 原文地址:https://www.cnblogs.com/rafell/p/6932768.html
Copyright © 2020-2023  润新知