第十五周课堂练习
MyOD
编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能提交测试代码和运行结果截图。
代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class IO {
public static String format(byte []bt){
int line=0 ;
StringBuilder buf=new StringBuilder() ;
for(byte d:bt){
if(line%16==0)
buf.append(String.format("%05x: ", line)) ;
buf.append(String.format("%02x ", d)) ;
line++ ;
if(line%16==0)
buf.append("\n");
}
buf.append("\n") ;
return buf.toString();
}
public static byte[] readFile(String file) throws IOException{
InputStream is=new FileInputStream(file) ;
int length=is.available() ;
byte bt[]=new byte[length] ;
is.read(bt) ;
return bt;
}
public static void main(String[]agrs) throws IOException{
byte []bt=IO.readFile("C:\\Users\\zx50jx\\Desktop\\20155331.txt");
String hexData=IO.format(bt) ;
System.out.println(hexData);
}
}
教材代码检查-p242
在IDEA中或命令行中运行P242 StackTraceDemo2.java
代码运行结果和教材一致吗?为什么?
代码:
public class StackTraceDemo2 {
public static void main(String[] args){
try{
c();
}catch(NullPointerException ex){
ex.printStackTrace();
}
}
static void c(){
try{
b();
}catch(NullPointerException ex){
ex.printStackTrace();
throw ex;
}
}
static void b(){
a();
}
static String a(){
String text=null;
return text.toUpperCase();
}
}
不完全一致,
MyCP
编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数:
java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
java MyCP -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.*;
/**
* Created by 10337 on 2017/5/31.
*/
import java.io.*;
public class MyCP
{
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream(args[1]);
FileOutputStream out = new FileOutputStream(args[2]);
String str = new String(args[0]);
byte[] data = new byte[1024];
int length;
if(str.equals("-tx")){
while((length = in.read(data)) != -1){
int number = data.hashCode();
String binaryNum = Integer.toBinaryString(number);
data = binaryNum.getBytes();
out.write(data); // 5 toBinary :101
}
}
else if(str.equals("-xt")){
while((length = in.read(data)) != -1){
int number = data.hashCode();
String binaryNum = Integer.toString(number);
data = binaryNum.getBytes();
out.write(data); // 5 toBinary :101
}
}
}
}