MyCP的代码实现

一、题目要求:

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

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

二、设计思路

此次的代码要求实现类似Linux下cp的功能。我们需要注意的以及考虑的细节有以下几点:

  1. 源文件和目标文件分属不同的文件形式,且由命令行提供。
  2. 程序可以接受“-tx”或“-xt”参数来选择转换形式(不需要实现类似cp命令的其他参数

    3.文本文件中内容为十进制数字(意味着没有其他形式的字符
  3. 如何简单实现二进制与十进制的相互转换

1.伪代码实现

程序读取命令行输入的三个参数,参数为“-tx”或“-xt”,否则报错并终止运行。
当参数为“-tx”时,读取txt文件中的数字,转换为二进制后写入bin文件
当参数为“-xt”时,读取bin文件中的二进制数字,转换为十进制后写入txt文件

2.实现读取命令行参数

在课上,老师曾数次提醒我们注意Java语言的main方法:public static void main(String args[]) 。我们命令行中的字符会自动存储在一个名为args的字符类型数组中,且从args[0]开始存储。如图所示:



注意⚠️:这里老师提到过,java和C语言有所区分。在运行时,java会直接从文件名后的参数开始存储,而C语言则会从文件名开始存储

因此,我们只需要读取args的值,便可以实现“-tx”“-xt”值的判断。

3.实现十进制到二进制的转化

实现十进制到二进制的转化其实就是将笔头上的方法转化成程序语言,这里我选择使用除二取余法,即除k取余法,主要用于将十进制的数转化为k进制。下图摘自百度百科:

代码实现为:

 int sum;
for (int i = number; i >= 1; i = i / 2) {
if (i % 2 == 0) {
sum = 0;
} else {
sum = 1;
}
result = sum + result;//不断让新计算的sum值置于result之前,实现余数的倒序排列。(result为字符串类型)
}
}

4.实现二进制到十进制的转化

实现二进制到十进制的转化更加简单,通过查阅API文档,我们发现Integer.parseInt方法就可以实现这一操作。

5.读入和写入文件

事实上打从一开始我就决定将文件中的数字用数据流读成一个数字字符串,但由于相关的知识理解不透彻,教材中对数据流的介绍我一直认为有点语焉不详,在反复修改代码n次后我决定放弃数据流(或许是我的理解有本质上的错误?还要以后细细研究一番),采用缓冲流来进行文件操作,最后经过一些小调试,成功实现了文件操作。

三、代码截图及运行截图

  • 首先建立一个写有20175308的a.txt和一个空的b.bin文件

  • 运行代码后检查b.bin,内容正确

  • 将b.bin内容换成一串计算好的二进制数1001100010000100001010011 并运行代码

  • 运行程序后打开a.txt,文件中内容正确

四、编程中遇到的问题

  • 写入文件时出现文件无法写入的情况

    解决:检查代码,忽略了flush()的作用,没有刷出缓冲池中的数据。

编程实现类似Linux下cp功能的更多相关文章

  1. 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能

    题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能 要求:MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十 ...

  2. 补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能

    蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...

  3. 编程实现类似Linux系统的cp功能

    选做题目以及分析 题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文 ...

  4. 《Linux下cp XXX1 XXX2的功能》的实现

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

  5. 20175303 Mycp实现Linux下cp xxx1 xxx2的功能

    20175303 Mycp实现Linux下cp xxx1 xxx2的功能 一.题目要求 编写MyCP2.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP2支持两个参数: ja ...

  6. 学号20175313 《实现Linux下cp XXX1 XXX2的功能(二)》第九周

    目录 MyCP2 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.心得体会 十.参考资料 MyCP2 一.题目 ...

  7. 学号20175313 《实现Linux下cp XXX1 XXX2的功能(一)》第九周

    目录 MyCP 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.参考资料 MyCP 一.题目要求 编写MyCP ...

  8. Linux C编程之一:Linux下c语言的开发环境

    ---恢复内容开始--- 今天开始根据Linux C编程相关视频的学习所做的笔记,希望能一直坚持下去... 1.开发环境的构成 编辑器:VI: 编译器:选择GNU  C/C++编译器gcc: 调试器: ...

  9. 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)

    在网络课程中,有讲到Socket编程,对于tcp讲解的环节,为了加深理解,自己写了Linux下进程Socket通信,在学习的过程中,又接触到了其它的几种方式.记录一下. 管道通信(匿名,有名) 管道通 ...

随机推荐

  1. 有道云笔记链接——JAVA面向对象的学习

     http://note.youdao.com/noteshare?id=cf39a0e493a6b3c7ad5d22204a7e7843

  2. 【读书笔记】iOS-基带攻击

    一,iOS设备中的蜂窝网络通信栈运行在专门的芯片上,这个芯片就是数字基带处理器. 参考资料:<黑客攻防技术宝典-iOS实战篇>

  3. PHP会话(Session)实现用户登陆功能 转自#落人间#

    对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...

  4. GDAL中GDALDataType中值与其在C++中数据类型对应

    GDAL中的GDALDataType是一个枚举型,其中的值为: GDT_Unknown : 未知数据类型 GDT_Byte : 8bit正整型 (C++中对应unsigned char) GDT_UI ...

  5. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL,spring获取context

    今天学习spring项目的时候出现了下面的错误信息: java.lang.ClassNotFoundException: org.springframework.web.context.Context ...

  6. EventBus结合rxjava2和retrofit2网络获取

    依赖: compile 'com.squareup.retrofit2:converter-gson:2.3.0'compile 'com.squareup.retrofit2:retrofit:2. ...

  7. Java:【面向对象:类的定义,静态变量,成员变量,构造函数,封装与私有,this】

    本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我 ...

  8. Python笔记(十四):操作excel openpyxl模块

    (一)  常遇到的情况 就我自己来说,常遇到的情况可能就下面几种: 读取excel整个sheet页的数据. 读取指定行.列的数据 往一个空白的excel文档写数据 往一个已经有数据的excel文档追加 ...

  9. 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略

    centos7+nginx+python3+django+uwsgi配置Django 项目部署   1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...

  10. Python CNN卷积神经网络代码实现

    # -*- coding: utf-8 -*- """ Created on Wed Nov 21 17:32:28 2018 @author: zhen "& ...