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("\n\n");
}
buf.append("\n") ;
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);
}
}