MyOD(课下作业,选做)
要求
编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能
思路
代码
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");
}//全部输出完毕后要输出最后的“\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.