匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

JAVA~幫幫忙~我想要中間兩行*****怎麼寫??

中間兩行***********************************

import java.io.FileInputStream;

import java.io.IOException;

public class FileDumper {

public static final int ASC = 0;

public static final int DEC = 1;

public static final int HEX = 2;

/**

* @param args

*/

public static void main(String[] args) {

// TODO 自動產生方法 Stub

if(args.length<1){

System.out.println("Usage: java FileDumper [-ahd] file1 file2 ...");

return;

}

int firstArg = 0;

int mode = ASC;

if(args[0].startsWith("-")){

firstArg = 1;

if(args[0].equals("-h")) mode = HEX;

else if(args[0].equals("-d")) mode = DEC;

}

for(int i = firstArg; i < args.length; i++){

if(mode == ASC) dumpAscii(args[i]);

else if(mode == HEX) dumpHex(args[i]);

else if(mode == DEC) dumpDecimal(args[i]);

if(i < args.length-1)

System.out.println("\r\n-------------------------------------------\r\n");

}

}

public static void dumpAscii(String filename){

**************************************************

}

public static void dumpDecimal(String filename){

**************************************************

}

public static void dumpHex(String filename){

FileInputStream fin = null;

byte[] buffer = new byte[24];

boolean end = false;

int bytesRead;

try{

fin = new FileInputStream(filename);

while(!end){

bytesRead = 0;

while( bytesRead < buffer.length) {

int r = fin.read(buffer, bytesRead, buffer.length-bytesRead);

if(r == -1){

end = true;

break;

}

bytesRead += r;

}

for( int i = 0; i < bytesRead; i++){

int hex = buffer[i];

if (hex<0) hex= 256 + hex;

if (hex>=16) System.out.print(Integer.toHexString(hex)+" ");

else System.out.print("0"+Integer.toHexString(hex)+" ");

}

System.out.println();

}

}catch(IOException e){

System.err.println(e);

}finally{

try{

if( fin != null ) fin.close();

}catch(IOException e){}

}

}

}

1 個解答

評分
  • 爵士
    Lv 5
    1 0 年前
    最佳解答

    只要將 dumpHex(String filename) 方法稍微修改就可以了,

    將該方法中 這兩行

    if (hex<0) hex= 256 + hex;

    if (hex>=16) System.out.print(Integer.toHexString(hex)+" ");

    改為

    // if (hex<0) hex= 256 + hex; //或直接刪除此行

    if (hex>=16) System.out.print(hex+" ");

    詳細程式如下:

    第一段 *** 區域 填入:

    dumpDecimal(filename);

    第二段 **** 區域填入:

    FileInputStream fin = null;

    byte[] buffer = new byte[24];

    boolean end = false;

    int bytesRead;

    try{

    fin = new FileInputStream(filename);

    while(!end){

    bytesRead = 0;

    while( bytesRead < buffer.length) {

    int r = fin.read(buffer, bytesRead, buffer.length-bytesRead);

    if(r == -1){

    end = true;

    break;

    }

    bytesRead += r;

    }

    for( int i = 0; i < bytesRead; i++){

    int hex = buffer[i];

    if (hex>=16) System.out.print(hex+" ");

    else System.out.print("0"+Integer.toHexString(hex)+" ");

    }

    System.out.println();

    }

    }catch(IOException e){

    System.err.println(e);

    }finally{

    try{

    if( fin != null ) fin.close();

    }catch(IOException e){}

    }

    2008-05-03 17:00:39 補充:

    還有一行需修改

    else System.out.print("0"+Integer.toHexString(hex)+" ");

    else System.out.print("0"+hex+" ");

    參考資料: 我的程式經驗
還有問題?馬上發問,尋求解答。