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");
}//全部输出完毕后要输出最后的“\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


码云链接
参考资料
20175314薛勐 MyOD(课下作业,选做)的更多相关文章
- MyOD(课下作业,选做)
MyOD(课下作业,选做) 代码要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...
- 20175314薛勐 数据库MySQL(课下作业,必做)
数据库MySQL(课下作业,必做) 要求 下载附件中的world.sql.zip, 参考Intellj IDEA 简易教程:数据库,导入world.sql,提交导入成功截图 编写程序,查询世界上超过& ...
- 20175314薛勐 MyCP(课下作业,必做)
MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...
- 20175221 《Java程序设计》迭代和JDB(课下作业,选做):
20175221 <Java程序设计> 迭代和JDB(课下作业,选做): 任务详情 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功 ...
- 迭代和JDB(课下作业,选做)
迭代和JDB(课下作业,选做) 题目要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图 ...
- 20175314薛勐 Arrays和String单元测试
Arrays和String单元测试(课下作业,选做) 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 CharAt Spl ...
- 20155332 补交ch12课下作业
20155332 补交ch12课下作业 课下测试提交晚了,我课后补做了一遍,答对13题,答错3题. 试题内容如下所示: 课本内容 1.并发(Concurrency) 访问慢I/O设备:就像当应用程序等 ...
- 20155322 2017-2018-1《信息安全系统设计》第十周 课下作业-IPC
20155322 2017-2018-1<信息安全系统设计>课下作业-IPC 作业内容 研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接. 共享内存 管 ...
- 2017-2018-1 20155327 《信息安全系统设计基础》课堂测试&课下作业
2017-2018-1 20155327 <信息安全系统设计基础>课堂测试&课下作业 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep ...
随机推荐
- js实时显示鼠标坐标
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title ...
- 二叉排序树插入C语言版 递归步骤理解
//二叉排序树 插入 (纯C语言实现) BTNode * BSTInsert2(BTNode *bt,int key){ //为什么纯C语言实现中 if(bt==NULL){ //要写成 bt-> ...
- Linux内存解读
1.free -m命令 [root@crawler ~]# free -m total used free shared buffers cached Mem: -/+ buffers/cache: ...
- LeetCode 789. Escape The Ghosts
题目链接:https://leetcode.com/problems/escape-the-ghosts/description/ You are playing a simplified Pacma ...
- freemarker数据类型
基本数据类型: 字符串 数字 布尔值 日期/时间 (日期,时间或日期时间) 数据结构: 哈希表 序列 注意一点:freemarker里面并没有对象这一数据类型!!!. 在freemarker中对象仅仅 ...
- windows2008 apache2.4 tomcat-7多域名绑定环境配置
=====================软件清单Apache2.4.33apache-tomcat-7.0.85===================== 1.安装apache 1.1下载ap ...
- 初识异步、并发处理纯代码及Demo
多线程Thread 处理 Thread thread = new Thread(()=> { ; i < ; i++) { Console.WriteLine("这是第" ...
- Spring MVC参数封装传递
在Spring MVC中,前端JSP页面可以传递 基本类型(int,String).实体类型.包装类型.数组类型.集合类型(List.map )等. 假如在传递的类型中有 Date类型的字段,需要在 ...
- RPM包指令总结
一.RPM RPM包安装位置 RPM包默认安装路径 /etc/ 配置文件安装目录 /usr/bin/ 可执行的命令安装目录 /usr/lib/ 程序所使用的函数库保存位置 /usr/share/doc ...
- MVC 执行顺序
MVC在底层和传统的asp.net是一致的,在底层之上,相关流程如下: 1)Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteC ...