20155227第十五周课堂实践

20155227第十五周课堂实践

提交之后发现交的截图是之前abc.txt文件为空时的截图。

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

关于od命令

功能:输出文件内容。
用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。
语  法:od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][--help][--version][文件...]
说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
Dump)。
但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。

常用参数:

   -a  此参数的效果和同时指定"-ta"参数相同。
  -A<字码基数>  选择要以何种基数计算字码。
  -b  此参数的效果和同时指定"-toC"参数相同。
  -c  此参数的效果和同时指定"-tC"参数相同。
  -d  此参数的效果和同时指定"-tu2"参数相同。
  -f  此参数的效果和同时指定"-tfF"参数相同。
  -h  此参数的效果和同时指定"-tx2"参数相同。
  -i  此参数的效果和同时指定"-td2"参数相同。
  -j<字符数目>或--skip-bytes=<字符数目>  略过设置的字符数目。
  -l  此参数的效果和同时指定"-td4"参数相同。
  -N<字符数目>或--read-bytes=<字符数目>  到设置的字符数目为止。
  -o  此参数的效果和同时指定"-to2"参数相同。
  -s<字符串字符数>或--strings=<字符串字符数>  只显示符合指定的字符数目的字符串。
  -t<输出格式>或--format=<输出格式>  设置输出格式。
  -v或--output-duplicates  输出时不省略重复的数据。
  -w<每列字符数>或--width=<每列字符数>  设置每列的最大字符数。
  -x  此参数的效果和同时指定"-h"参数相同。
  --help  在线帮助。
  --version  显示版本信息。

代码

代码如下:

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class MyOD {

    public static String format(byte []bt){

        int line=0 ;

        StringBuilder buf=new StringBuilder() ;

        for(byte d:bt){

            if(line%16==0)

                buf.append(String.format("%05x: ", line)) ;

            buf.append(String.format("%02x  ", d)) ;

            line++ ;

            if(line%16==0)

                buf.append("

");

        }

        buf.append("
") ;

        return buf.toString();

    }

    public static byte[] readFile(String file) throws IOException{

        InputStream is=new FileInputStream(file) ;

        int length=is.available() ;

        byte bt[]=new byte[length] ;

        is.read(bt) ;

        return bt;

    }

    public static  void main(String[]agrs) throws IOException{

        byte []bt=MyOD.readFile("C:\Workspace\guyanlin20155227\src\2015527\exam2017531\abc.txt");

        String hexData=MyOD.format(bt) ;

        System.out.println(hexData);

    }

}

运行结果截图

原文地址:https://www.cnblogs.com/guyanlin/p/6922798.html