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(课下作业,选做)的更多相关文章

  1. MyOD(课下作业,选做)

    MyOD(课下作业,选做) 代码要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

  2. 20175314薛勐 数据库MySQL(课下作业,必做)

    数据库MySQL(课下作业,必做) 要求 下载附件中的world.sql.zip, 参考Intellj IDEA 简易教程:数据库,导入world.sql,提交导入成功截图 编写程序,查询世界上超过& ...

  3. 20175314薛勐 MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...

  4. 20175221 《Java程序设计》迭代和JDB(课下作业,选做):

    20175221 <Java程序设计> 迭代和JDB(课下作业,选做): 任务详情 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功 ...

  5. 迭代和JDB(课下作业,选做)

    迭代和JDB(课下作业,选做) 题目要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图 ...

  6. 20175314薛勐 Arrays和String单元测试

    Arrays和String单元测试(课下作业,选做) 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 CharAt Spl ...

  7. 20155332 补交ch12课下作业

    20155332 补交ch12课下作业 课下测试提交晚了,我课后补做了一遍,答对13题,答错3题. 试题内容如下所示: 课本内容 1.并发(Concurrency) 访问慢I/O设备:就像当应用程序等 ...

  8. 20155322 2017-2018-1《信息安全系统设计》第十周 课下作业-IPC

    20155322 2017-2018-1<信息安全系统设计>课下作业-IPC 作业内容 研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接. 共享内存 管 ...

  9. 2017-2018-1 20155327 《信息安全系统设计基础》课堂测试&课下作业

    2017-2018-1 20155327 <信息安全系统设计基础>课堂测试&课下作业 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep ...

随机推荐

  1. js对象的创建

    一.通过对象直接量来创建 var emptyt={};  //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...

  2. oracle 11g审计关闭,及删除日志

    转自https://blog.csdn.net/louwzh/article/details/51274955 环境:Linux redhat6.3 下安装的oracle11g oracle 11g推 ...

  3. 转:APP开发浅谈-Fiddler抓包详解

    原文地址:http://www.luoxudong.com/?p=306 Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今 ...

  4. 在Windows2008下安装SQL Server 2005无法启动服务的解决办法

    在Windows2012下安装SQL Server 2005无法启动服务的解决办法 1.正常安装任一版本的SQL Server 2005. 2.安装到SqlServer服务的时候提示启动服务失败  此 ...

  5. java封装的概念学习笔记

      继承.封装.多态.抽象是面向对象编程的四大基本概念,其中封装装为重要,因为从我们学习JAVA开始,就基本上接触了封装,因为JAVA中的所有程序都是写在类中的,类也能当做一种封装. 在面向对象中封装 ...

  6. vue富文本编辑器

    基于webpack和vue 一.npm 安装 vue-quill-editor 二.在main.js中引入 import VueQuillEditor from 'vue-quill-editor'/ ...

  7. 获取物理内存total值和used值

    1.使用 free -m 查看 2.物理内存total值 # free -m | grep Mem | awk '{print $2}' 3.物理内存used值 # free -m | grep Me ...

  8. How does the compilation and linking process work?

    The compilation of a C++ program involves three steps: Preprocessing: the preprocessor takes a C++ s ...

  9. ios监听静音键和音量键事件

    http://blog.csdn.net/slinloss/article/details/7870559

  10. 【C语言 基础】什么流程控制?

    流程控制就是控制程序执行的顺序 流程控制的分类: 1.顺序执行 2.选择执行 定义 某些代码可能执行也可能不执行,有选择的执行某些代码 3.循环执行