package?lianxi;
import?java.io.FileInputStream;
import?java.io.IOException;
public?class?IOUtil?{
/**
?*?讀取指定文件內(nèi)容,按照16進(jìn)制輸出到控制臺(tái)
?*?并且每輸出十個(gè)byte換行
?*?@param?fileName
?*/
public?static?void?printHex(String?fileName)?throws?IOException{
//把文件作為字節(jié)流進(jìn)行讀操作
FileInputStream?in=new?FileInputStream(fileName);
int?b;
int?i=1;
while((b=in.read())!=-1){
if(b<=0xf){
//單?位數(shù)前面補(bǔ)0
System.out.print("0");
}
System.out.print(Integer.toHexString(b)+"??");//將整型b轉(zhuǎn)換為16進(jìn)制表示的字符串
if(i++%10==0){
System.out.println();
}
}
in.close();
}
public?static?void?printHexByByteArray(String?fileName)?throws?IOException{
FileInputStream?in=new?FileInputStream(fileName);
byte[]?buf=new?byte[20*1024];
/**
?*?從in中批量讀取字節(jié),放入到buf這個(gè)字節(jié)數(shù)組中,從第0個(gè)位置開始放,
?*?最多放buf.length個(gè)。返回的是讀到的字節(jié)的個(gè)數(shù)
?*/
int?bytes=in.read(buf,0,buf.length);//一次性讀完,說明這個(gè)字節(jié)數(shù)組足夠大
int?j=1;
for(int?i=0;i<bytes;i++){
if(buf[i]<=0xf){
System.out.print("0");
}
System.out.print(Integer.toHexString(buf[i])+"??");
if(j++%10==0){
System.out.println();
}
}
in.close();
}
}------》這個(gè)是IOUtil類package?lianxi;
import?java.io.IOException;
public?class?IOUtilTest1?{
public?static?void?main(String[]?args)?{
try?{
IOUtil.printHex("e:\\wordstudy\\hello.txt");
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}-----》這個(gè)是IOUtilTest1類,是測試IOUtil類的第一個(gè)方法的測試類package?lianxi;
import?java.io.IOException;
public?class?IOUtilTest2?{
public?static?void?main(String[]?args)?{
try?{
IOUtil.printHexByByteArray("e:\\wordstudy\\hello.txt");
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}----》這個(gè)是IOUtilTest2類,是測試IOUtil類的第二個(gè)方法的測試類第一個(gè)測試類能成功運(yùn)行,第二個(gè)測試類就不行了,不知道哪里出問題了,求教大神解答。先謝謝了
添加回答
舉報(bào)
0/150
提交
取消