20175221 MyCP(课下作业,必做)
生活随笔
收集整理的這篇文章主要介紹了
20175221 MyCP(课下作业,必做)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MyCP(課下作業(yè),必做)
任務(wù)詳情
- 編寫MyCP.java 實(shí)現(xiàn)類似Linux下cp XXX1 XXX2的功能,要求MyCP支持兩個參數(shù):
- - java MyCP -tx XXX1.txt XXX2.bin 用來把文本文件(內(nèi)容為十進(jìn)制數(shù)字)轉(zhuǎn)化為二進(jìn)制文件 - java MyCP -xt XXX1.bin XXX2.txt 用來二進(jìn)制文件把轉(zhuǎn)化為文本文件(內(nèi)容為十進(jìn)制數(shù)字)
- 提交測試代碼和運(yùn)行結(jié)果截圖,加上學(xué)號水印,提交碼云代碼鏈接。 需要提交博客和答辯
設(shè)計(jì)思路
-
?剛看題目時,理解錯了題目的意思,以為是要把一個二進(jìn)制文件先轉(zhuǎn)換成序列,再輸出對應(yīng)的十進(jìn)制,最后把序列轉(zhuǎn)換成文件。后來和同學(xué)討論才發(fā)現(xiàn),自己沒仔細(xì)看題,理解錯了方向。
- 由于太久沒使用Linux的操作指令,于是使用?man?,?cp --help?來了解對應(yīng)功能
-
我大概構(gòu)思了一下,要完成這個實(shí)驗(yàn)可能會遇到的一些難點(diǎn):
- 如何完成二進(jìn)制與十進(jìn)制數(shù)字的互相轉(zhuǎn)換
- 在txt中轉(zhuǎn)化完的數(shù)據(jù),怎樣寫入另一個文件
-
針對這幾個問題,我去查閱了相關(guān)資料
-
十進(jìn)制轉(zhuǎn)二進(jìn)制:
-
二進(jìn)制轉(zhuǎn)十進(jìn)制
-
文件的寫入和讀取
-
代碼如下
- 1 import java.io.*;
2 import java.util.Scanner;
3 public class MyCP {
4 public static void main(String[] args) throws IOException {
5 //輸入十進(jìn)制文本
6 Scanner scan=new Scanner(System.in);
7 String str=scan.nextLine();
8 String[]ch=str.split(" ");
9 //調(diào)用tx方法把文本文件轉(zhuǎn)化為二進(jìn)制文件
10 if(ch[2].equals("-tx")){
11 FileReader reader = new FileReader("/home/zxj/twoweek/MyCP/testorigin.txt");
12 FileWriter writer = new FileWriter("/home/zxj/twoweek/MyCP/testchange.bin");
13 tx(reader, writer);
14 }
15 //用xt方法把二進(jìn)制文件把轉(zhuǎn)化為文本文件
16 if(ch[2].equals("-xt")){
17 FileReader reader = new FileReader("/home/zxj/twoweek/MyCP/testchange.bin");
18 FileWriter writer = new FileWriter("/home/zxj/twoweek/MyCP/testchange2.txt");
19 xt(reader, writer);
20 }
21 }
22 public static void tx(FileReader reader, FileWriter writer) {
23 try (FileReader In = reader; FileWriter Out = writer) {
24 char[] number = new char[1];
25 while((In.read(number))!=-1) {//FileReader的read()方法獲取對應(yīng)的十進(jìn)制數(shù)字
26 int number1=(int)number[0];
27 String result="";
28 String totwo=Integer.toBinaryString(number1);//調(diào)用Integer.toBinaryString將十進(jìn)制轉(zhuǎn)為二進(jìn)制
29 for(int i=0;i<8;i++){//返回一個二進(jìn)制的無符號整數(shù)
30 if(i<(8-totwo.length())) {
31 result = result+'0';
32 }
33 }
34 result=result+totwo;
35 Out.write(result, 0, 8);//FileWriter的write()方法保存得到的二進(jìn)制
36 Out.write(" ");
37 }
38 }catch (IOException e) {
39 e.printStackTrace();
40 }
41 }
42 public static void xt(FileReader reader, FileWriter writer) {
43 try (FileReader In = reader; FileWriter Out = writer) {
44 char[] number = new char[8];
45 char[] ch = new char[1];
46 while((In.read(number))!=-1) {
47 String result="";
48 In.read();//FileReader的read()方法獲取對應(yīng)的8位二進(jìn)制數(shù)字
49 for(int i=0;i<8;i++){
50 result=result+number[i];
51 }
52 int ten=Integer.valueOf(result,2);//Integer.valueOf()方法將二進(jìn)制轉(zhuǎn)為十進(jìn)制
53 ch[0]=(char)ten;
54 Out.write(ch, 0, 1);//FileWriter的write()方法保存得到的十進(jìn)制
55 }
56 }catch (IOException e) {
57 e.printStackTrace();
58 }
59
60 }
61
62 }
?
?
結(jié)果截圖
- 首先在指定路徑下創(chuàng)建文本,并在其中輸入十進(jìn)制數(shù)字
?
- 執(zhí)行?java MyCP -tx testorigin.txt testchange.bin?,生成含有對應(yīng)二進(jìn)制數(shù)字的bin文件
- 查看bin文件內(nèi)容
- 再執(zhí)行?java MyCP -xt testchange.bin testchange2.txt?,將二進(jìn)制數(shù)字再轉(zhuǎn)換回十進(jìn)制數(shù)字,并生成文本文件
-
問題與解決方法
-
問題1:
-
生成的bin文件無法打開查看
-
問題1解決方法:
-
我點(diǎn)擊選擇程序,查找相關(guān)應(yīng)用,但遺憾的是沒有合適的應(yīng)用可以安裝來打開bin文件,我只好回到命令行進(jìn)到vim編輯頁面查看。
-
問題2:
- 輸入命令報錯找不到路徑文件
-
問題2解決方法:
- 這個是自己犯傻了,執(zhí)行命令之前,沒有創(chuàng)建對應(yīng)的十進(jìn)制文本文件。所以只要在執(zhí)行命令前,在指定路徑下創(chuàng)建對應(yīng)的十進(jìn)制文本文件即可。
碼云鏈接
?
參考資料
Integer.parseInt(s)與Integer.valueOf(s)的區(qū)別詳解
java源碼Integer類toBinaryString()方法探究
java FileReader和FileWriter
轉(zhuǎn)載于:https://www.cnblogs.com/zxja/p/10778735.html
總結(jié)
以上是生活随笔為你收集整理的20175221 MyCP(课下作业,必做)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬虫beautifulsou
- 下一篇: 20175208 《Java程序设计》第