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. SYM File

    Structure  Programme header Section Symbol table Programme header An executable or shared object fil ...

  2. JavaWeb——<c:forEach varStatus="status">

    我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行.偶数行差异:最后一行特殊处理等等.先就varStatus属性常用参数总结下: $ ...

  3. 关于Python课程的一些思考。

    出于对网络爬虫的好奇,我选修了Python程序设计,至于pyhton还能干啥还不太清除,只觉得爬一些数据很有意思,所以希望老师讲一些数据分析之类的技术.学完课程希望能分析一些数据,比如:还有: 上课的 ...

  4. Python笔记:编码问题

    1. python2的编码: python2中使用的是ASCII码,所以不支持中文,如果要在python2中写入中文编码,需要在文件头编写: #-*- encoding:utf-8 -*- 2. 不同 ...

  5. (python基础 函数)

    关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值.使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值 必需参数:必 ...

  6. [持续交付实践] Jenkins 中国用户大会参会见闻

    前言 上周日在上海召开了Jenkins中国用户大会(Jenkins User Confluence China),这应该是Jenkins在中国第一次举办吧.Jenkins的创始人Kohsuke Kaw ...

  7. C# 委托类型及使用

    转载声明:转载本文是为了方便自己查看,有需要的朋友建议查看原文(注:原文中有作者纠正的评论,我没有搬运)原文地址:http://www.cnblogs.com/akwwl/p/3232679.html ...

  8. leetcode每日刷题计划-简单篇day7

    还没有背单词,头晕脑胀 Num 66 加一 Plus One 注意就是进位的时候最后一位,为了省两句代码,那几个语句顺序写反覆盖的乱七八糟 vector头部插入(a.begin(),被插入的数) 如果 ...

  9. MySQL(进阶部分)

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( SEL ...

  10. Django自定义模板标签和过滤器

    1.创建模板库 在某个APP所在目录下新建包templatetags,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py. 在这个模块中编写相关代码. 注意:templa ...