MyCP(课下作业,必做)

要求

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

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

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

说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

  • 思路

    题目要求实现文件的复制过程,且能够支持两个参数:-tx和-xt;

    把内容为十进制数字的文本文件转化为二进制文件,所以只需要考虑由数字字符构成的文本文档;

    十进制数字单个数字最大是9,用二进制数字表示需要4位,所以需要把文本文件中的十进制数字的每一位都补齐为四位二进制数。

代码

import java.io.*;
public class Mycp {
public static void main(String args[]) {
String choose=args[0];//获得第一个参数
String File1=args[1];//获得第二个参数:文件名
String File2=args[2];//获得第三个参数:文件名
File sourceFile = new File(File1);//读取的文件
File targetFile = new File(File2);//写入的文件
int ReadLenth=0;
if (choose.equals("-tx")){
ReadLenth=1;
}//如果参数是-tx,每次读取的长度设置为1
else if(choose.equals("-xt")) {
ReadLenth=4;
}//如果参数是-xt,每次读取的长度设置为4
else{
System.out.println("输入参数错误!");
System.exit(0);
}//如果参数输入错误的话就退出程序
char c[] =new char[ReadLenth];//定义字符数组
try{
Writer out = new FileWriter(targetFile);//指向目的地的输出流
Reader in = new FileReader(sourceFile);//指向源的输入流
int n = -1;
while((n=in.read(c,0,ReadLenth))!=-1) {
//当文件中还有信息时,继续读取字符到字符数组c中,n是返回的实际读取的字符的个数
String number="";
if(ReadLenth==1){
number=Integer.toBinaryString((int)c[0]-48);
//把读取到的十进制数转化为二进制数
while(number.length()<4){
number="0"+number;//把二进制数扩充为4位
}
out.write(number);//写入目标文件
}
else if(ReadLenth==4){
for(int i=0;i<n;i++){
number=number+c[i];//读取4位的二进制数
}
number=Integer.valueOf(number,2).toString();//二进制数转化十进制,再转为字符串形式
out.write(number);//写入目标文件
}
}
out.flush();
out.close();
}
catch(IOException e) {
System.out.println("Error "+e);
}
}
}

测试结果

20175333曹雅坤MyCP(课下作业,必做)的更多相关文章

  1. MyCP(课下作业,必做)

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

  2. MyCP课下作业

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

  3. 20175316 盛茂淞 MyCP(课下作业,必做)

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

  4. 20175333曹雅坤 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  5. # 20175333曹雅坤《Java程序设计》第七周学习总结

    教材学习内容总结 第八章-常用实用类String类 构造String对象 字符串的并置 String类的常用方法 字符串与基本数据的互相转化 对象的字符串表示 字符串与字符.字节数组 正则表达式及字符 ...

  6. # 20175333曹雅坤《Java程序设计》第五周学习总结

    教材学习内容总结 第六章要点: 1.接口:1)接口声明: interface //接口的名字 2)接口体 2.实现接口:类实现接口:一个类需要在类声明中使用关键字implements声明该类实现一个或 ...

  7. # 20175333曹雅坤《Java程序设计》第四周学习总结

    教材学习内容总结 第五章:子类与继承 5.1子类与父类:关键字extends 5.2子类的继承性:如果子类与父类在一个包中,除了private其他都可以继承:如果不在一个包中,则private和友好都 ...

  8. # 20175333曹雅坤《Java程序设计》第2周学习总结

    教材学习内容总结 1.学习第二,三章ppt,并观看视频. 2.在虚拟机中连接到码云,克隆代码,编译与运行教材上的例子. 3.在虚拟机上安装相关配置,使其满足学习要求. 4.运行并截图上传监督学习脚本s ...

  9. # 20175333曹雅坤《Java程序设计》第1周学习总结

    教材学习内容总结 1.学习第一章PPT,安装JRE,JDK并配置path环境参数 2.在windows上使用dos命令运行教材第一章代码Hello.java和People.java 3.下载使用git ...

随机推荐

  1. 前序遍历构造已知二叉树(Java)

    public BiNode createBiTree() { Scanner input = new Scanner(System.in); int k = input.nextInt(); if(k ...

  2. Python进阶7--正则表达式

    正则表达式*** 概述 分类 基本语法  元字符 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符. [.. ...

  3. Activiti6-IdentityService(学习笔记)

    IdentityService并不依赖我们的流程部署文件,所以 直接放使用方法的测试代码了: public class IdentityServiceTest { private static fin ...

  4. vue中怎么全局引入sass文件

    1.添加依赖 npm install sass-resources-loader --save-dev 2.修改build/utils.js scss: generateLoaders('sass') ...

  5. springboot项目中配置swagger-ui

    Git官方地址:https://github.com/SpringForAll/spring-boot-starter-swagger Demo:https://github.com/dyc87112 ...

  6. MDS

    转载:https://blog.csdn.net/victoriaw/article/details/78500894 多维缩放(Multidimensional Scaling, MDS)是一组对象 ...

  7. webpack4 学习 --- 处理静态资源

    webpack 是利用loader 来处理各种资源的,wepback的配置基本上就是为各种资源文件,指定不同类型的loader. 1,处理css 最基本的css 处理loader 是css-loade ...

  8. model中的一些处理

    3.setting.py中设置 主要有三个地方需要设置: MEDIA_URL = ‘/media/’,设置该路径为了在模板中定位图片的位置,<img src="{{ MEDIA_URL ...

  9. mpvue——仿QQ【一】

    前言 原生仿QQ https://github.com/wangyang0210/Imitate-QQ-For-Mini-Program 这个是当时学习小程序时,模仿的一个demo,只不过是纯页面没啥 ...

  10. git使用kdiff3合并乱码问题

    https://blog.csdn.net/u011008029/article/details/72644515 在合并代码过程中发现kdiff打开的文件都是乱码,解决方案如下: 第一步:点击Set ...