20155321 2016-2017-2《Java程序设计》课堂实践项目2

实践内容

编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:

  1. java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
  2. java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)

    提交测试代码和运行结果截图,加上学号水印,提交码云代码链接

代码部分

  • MyCP部分
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner; public class MyCP { public static void main(String[] args) throws IOException {
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
String[]Nstr=str.split(" "); if(Nstr[0].equals("-tx"))
{
FileReader reader = new FileReader(Nstr[1]);
FileWriter writer = new FileWriter(Nstr[2]);
CharUtiltx.dump(reader, writer);
} if(Nstr[0].equals("-xt"))
{
FileReader reader = new FileReader(Nstr[1]);
FileWriter writer = new FileWriter(Nstr[2]);
CharUtilxt.dump(reader, writer);
} }
}
  • 二进制文件转文本文件
import java.io.*;

public class CharUtiltx {
public static void dump(Reader src, Writer dest) throws IOException {
try(Reader input = src; Writer output = dest) {
char[] data = new char[1];
while((input.read(data)) != -1) {
int da=(int)data[0];
String str1="";
String str=Integer.toBinaryString(da);
for(int i=0;i<8;i++)
{
if(i<(8-str.length()))str1+='0'; }
str1+=str;
output.write(str1, 0, 8);
output.write(" ");
}
}
}
}
  • 文本文件转二进制文件
import java.io.*;

public class CharUtilxt {
public static void dump(Reader src, Writer dest) throws IOException {
try(Reader input = src; Writer output = dest) {
char[] data = new char[8];
char []ch = new char[1]; while((input.read(data)) != -1) {
String str="";
for(int i=0;i<8;i++)
{
str+=data[i];
}
int ten=Integer.valueOf(str,2);
ch[0]=(char)ten;
output.write(ch, 0, 1);
output.write(" ");
}
}
}
}

实验截图

代码中所遇到的问题

  • 问题:不知道如何输入命令使程序知道该执行的是文本文件转为二进制文件还是二进制文件转为文本文件?

  • 解决方案:利用数组把输入的三个字符串存储下来,字符串之间以空格符作为分割,实现方式用到了以往课堂上学习到的split的方法完成即可

20155321 2016-2017-2《Java程序设计》课堂实践项目2的更多相关文章

  1. 20155321 2016-2017-2《Java程序设计》课堂实践项目

    20155321 2016-2017-2<Java程序设计>课堂实践项目 关于String类 split方法 charAt方法 项目题目: 模拟实现Linux下Sort -t : -k 2 ...

  2. 《Java 程序设计》课堂实践项目-Arrays和String单元测试

    <Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...

  3. 20155322 《Java程序设计》课堂实践项目 数据库-3-4

    20155322 <Java程序设计>课堂实践项目 数据库-3-4 数据库-3 实践要求 参考教材代码完成下面的要求,提交能连接到world的截图(有学号水印),并提交代码的码云链接.查询 ...

  4. 20155322 《Java程序设计》课堂实践项目MyOD

    20155322 <Java程序设计>课堂实践项目MyOD 实践要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码和 ...

  5. 《Java 程序设计》课堂实践项目-命令行参数

    <Java 程序设计>课堂实践项目 课后学习总结 目录 改变 命令行参数实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改.加了 ...

  6. 《Java 程序设计》课堂实践项目 课后学习总结

    <Java 程序设计>课堂实践项目 课后学习总结 String类的使用(sort) 目录 Linux命令(sort) 课堂实践 课后思考 学习老师的代码之后的思考:int与Integer ...

  7. 《Java 程序设计》课堂实践项目汇总链接

    1.<Java 程序设计>课堂实践项目-命令行参数 2.<Java 程序设计>课堂实践项目-mini dc 3.<Java 程序设计>课堂实践项目-Arrays和S ...

  8. 《Java 程序设计》课堂实践项目-类定义

    <Java 程序设计>课堂实践项目类定义 课后学习总结 目录 改变 类定义实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改. ...

  9. 《Java 程序设计》课堂实践项目-简易计算器

    <Java 程序设计>课堂实践项目简易计算器 课后学习总结 目录 改变 简易计算器实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有 ...

随机推荐

  1. jQueryeasyUI+Hibernate+struts2实现商城后台管理之复合类别

    一.在Category.java中添加父类别和子类别两个变量,并生成get/set方法

  2. Java虚拟机12:虚拟机性能监控与故障处理工具

    前言 定位系统问题的时候,知识.经验是基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异常堆栈.GC日志.线程快照.堆转储快照等.经常使用适当的虚拟机监控和分析的工具可以加 ...

  3. Tableau10.4中智能显示点击后消失的解决方案

    如果你的电脑是Win10,并且是高分屏,可能会出现和我一样的问题,就点击智能显示后,发现找不到了. 那么解决方案就是: 这样就能找到智能显示了.

  4. BZOJ1821:[JSOI2010]部落划分(并查集,二分)

    Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...

  5. gluoncv faster_rcnn 参数修改

    https://github.com/dmlc/gluon-cv/blob/master/gluoncv/model_zoo/faster_rcnn/faster_rcnn.py 对你选用的模块,修改 ...

  6. bzoj 4712: 洪水

    [权限题][https://www.lydsy.com/JudgeOnline/status.php?problem_id=4712&jresult=4] 这道动态\(dp\)终于不是独立集/ ...

  7. [转]谈谈关于MVP模式中V-P交互问题

    在差不多两年的时间内,我们项目组几十来号人都扑在一个项目上面.这是一个基于微软SCSF(Smart Client Software Factory)的项目,客户端是墨尔本一家事业单位.前两周,我奉命负 ...

  8. HDU 1059(多重背包加二进制优化)

    http://acm.hdu.edu.cn/showproblem.php?pid=1059 Dividing Time Limit: 2000/1000 MS (Java/Others)    Me ...

  9. CentOS7.2安装RabbitMQ笔记

    身为.NET程序员,用着宇宙级IDE,干什么事都变得越来越懒了,Windows操作系统在手,能通过桌面点点点的方式何必找其他罪受呢..于是RabbitMQ自然而然也就跑在Windows上了,说实话Wi ...

  10. git 从远程仓克隆到本地新分支

    克隆远程仓代码到本地 git clone  http://******:8080/DEV1-WMALL_DQ/WMALL_DQ_Front.git    // git 库地址 当前分支是master ...