20175315Mycp
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);
}
}
}- 由于我个人的笔记本电脑主板短路了,短时间内无法修好,所以只能用同学的电脑测试并调试代码。目前只能提交这么多,望老师理解!!!
20175315Mycp的更多相关文章
随机推荐
- easyui validatebox textbox 取值和赋值
总结:表单元素使用easyui时,textbox和validatebox设置值和获取值的方式不一样 text-box设置值只能使用id选择器选择表单元素,只能使用textbox("setVa ...
- Python Threading问题:TypeError in Threading. function takes 1 positional argument but 100 were given
在使用python多线程module Threading时: import threading t = threading.Thread(target=getTemperature, args = ( ...
- Servlet开发笔记(二)
ServletContext对象 WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用. ServletConfig对象中维 ...
- Mybatis 基本使用
工程结构: 1.在test库创建表student(MySql数据库) 2.创建实体类Student.java package com.gdut.testMybatis.vo; public class ...
- redis的三种集群方式
redis有三种集群方式:主从复制,哨兵模式和集群. 1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令: 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用 ...
- Django-4 视图层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- Python基础:搭建开发环境(1)
1.Python语言简介 2.Python环境 Python环境产品存在多个. 2.1 CPython CPython是Python官方提供的.一般情况下提到的Python就是指CPython,CPy ...
- CS程序自动更新实现原理及代码(支持多版本多文件更新)
公司主要项目为CS端,经常遇到客户需求变更及bug处理,在没有引用自动更新之前每次更新程序,必须手动对每个客户端进行更新,这样导致技术支持工作量特别大,也给客户不好的印象,因此我需要一个自动更新程序! ...
- parcel+vue入门
一.parcel简单使用 npm install -D parcel-bundler npm init -y (-y表示yes,跳过项目初始化提问阶段,直接生成package.json 文件.) Pa ...
- springdata 动态查询之分页