zoukankan      html  css  js  c++  java
  • 20175314薛勐 MyOD(课下作业,选做)

    MyOD(课下作业,选做)

    要求

    编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能

    思路

    伪代码:

        读取命令行输入的参数(文件名)
        以16为每个字符串的长度读取文件中的内容,得到字符串s1
        每读取一个,进行下列操作直到文件中的消息全部读完:
        {
            设定新的字符串s2=s1
            先输出每行开头printf("%07o",截止到上一行,字符的个数)
            按一定间隔输出s1
            换行
            按一定间隔输出s2中每个字符的ASCII码
        }
        最后一行输出字符的总个数printf("%07o",字符的总个数)
    

    代码

    MyOD

    import static java.lang.System.out;
    import java.io.*;
    import java.sql.*;
    import java.util.Scanner;
    public class MyOD {
        public static void main(String[] args){
            String FileName=args[0];
            int n=-1,len=0,FileLen=0;
            byte [] a=new byte[100];
            try  {
                RandomAccessFile f2 = new RandomAccessFile(FileName, "r");
                FileLen=(int)f2.length();//获得文件中字符的个数
            }
            catch (FileNotFoundException e) {}
            catch (IOException e){}
            try{
                File f=new File(FileName);
                InputStream in = new FileInputStream(f);
                while((n=in.read(a,0,16))!=-1) {//不断读取文件中的字符,每次读取16个,n是实际读取的个数
                    String s=new String (a,0,n);
                    out.printf("%07o",len);//输出每一行的开头
                    char [] ch=s.toCharArray();//将读取到的字符串转化为字符数组
                    for(int i=0;i<s.length();i++){
                        System.out.print("  ");
                        System.out.print(Integer.toHexString((int)ch[i]));
                    }//第一行先按格式输出的ASCII码
                    len=len+n;
                    if(len==FileLen){
                        System.out.print("   ");
                        System.out.print("0a");
                    }
                    System.out.println();
                    System.out.print("       ");
                    for(int i=0;i<s.length();i++){
                        System.out.print("   ");
                        System.out.print(ch[i]);
                    }//第二行按格式输出每个字符
                    if(len==FileLen){
                        System.out.print("   ");
                        System.out.print("\n");
                    }//全部输出完毕后要输出最后的“
    ”
                    System.out.println();
                }
                out.printf("%07o",len);//最后一行是总字符个数的8进制表示
                in.close();
            }
            catch(IOException e) {
                System.out.println("File read Error"+e);
            }
        }
    }
    

    测试结果

    XXX.txt

    • My name is Barry Allen,and I am the fastest man alive.

    MyOD.java

    码云链接

    参考资料

  • 相关阅读:
    将kali linux装入U盘 制作随身携带的kali linux
    arch/manjaro linux configuration
    python资源

    JSP通过AJAX获取服务端的时间,在页面上自动更新
    Spark基础
    MapReduce基础
    HDFS基础
    C#输出杨辉三角形
    Java窗体居中显示的2种方法
  • 原文地址:https://www.cnblogs.com/SANFENs/p/10786847.html
Copyright © 2011-2022 走看看