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

    码云链接

    参考资料

  • 相关阅读:
    [ Linux ] rsync 对异地服务器进行简单同步
    [ Skill ] 遍历整个项目设计的两个思路
    [ Skill ] 不常用的函数笔记
    [ Perl ] Getopt 使用模板
    [ Skill ] 两个 listBox 数据交换的模板
    [ Linux ] "真"后台 nohup
    [ VM ] VirtualBox 压缩 .vdi
    [ Skill ] Layout 工艺移植,还原库调用关系
    win8 hyper-v 禁用不必卸载虚拟机
    BM算法解析(计算机算法-设计与分析导论(第三版))
  • 原文地址:https://www.cnblogs.com/SANFENs/p/10786847.html
Copyright © 2011-2022 走看看