我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          讀Class文件的示例程序

          import java.io.BufferedInputStream;
          import java.io.BufferedWriter;
          import java.io.FileInputStream;
          import java.io.FileWriter;
          import java.io.IOException;
          public class ReadAndWriteClass {
           
          //16進制數字字符集
           private static String hexString = "0123456789ABCDEF";
           
          /** *//**
           * 將字節數組的指定長度部分編碼成16進制數字字符串
           * 
          @param buffer 待編碼的字節數組
           * 
          @param length 指定的長度
           * 
          @return 編碼后連接而成的字符串
           
          */

           
          public static String encode(byte[] buffer,int length)
           
          {
           StringBuilder sbr 
          = new StringBuilder();
           
          //將字節數組中每個字節拆解成2位16進制整數
           for(int i=0;i< length;i++)
           
          {
           sbr.append(hexString.charAt((buffer[i]
          &0xf0)>>4));
           sbr.append(hexString.charAt(buffer[i]
          &0x0f));
           sbr.append(
          " ");
           }

           
          return sbr.toString();
           }

           
          /** *//**
           * 讀取一個Class文件,將其所有字節轉換為16進制整數,并以字符形式輸出
           * 
          @param inputPath 輸入文件的完整路徑
           * 
          @param outputPath 輸出文件的完整路徑
           * 
          @throws IOException 讀寫過程中可能拋出的異常
           
          */

           
          public static void rwclass(String inputPath, String outputPath) 
              
          throws IOException {
           
          //讀取Class文件要用字節輸入流
           BufferedInputStream bis = 
              
          new BufferedInputStream(new FileInputStream(inputPath));
           
          //輸出轉換后的文件要用字符輸出流
           BufferedWriter bw =
               
          new BufferedWriter(new FileWriter(outputPath));
           
          int readSize = 16;
           
          byte[] buffer_read = new byte[readSize];
           String line;
           String lineNumber 
          = "0000000";
           String strReplace;
           
          int i = 0;
           
          while ((readSize = bis.read(buffer_read,0,readSize))!= -1)
           
          {
             line 
          = encode(buffer_read,readSize);
             strReplace 
          = Integer.toHexString(i);
             lineNumber 
          = lineNumber.substring(07-strReplace.length());
             lineNumber 
          = lineNumber+strReplace;
             line 
          = lineNumber+"0h: "+line;
             bw.write(line);
             bw.newLine();
             i
          ++;
           }

             bis.close();
             bw.close();
           }

           
          /** *//**
           * 程序的入口方法
           * 
          @param args
           * 
          @throws IOException
           
          */

           
          public static void main(String[] args)
           
          {
           
          //指定輸入、輸出文件的完整路徑
           String inputPath = "c:/kk/ReadAndWriteClass.class";
           String outputPath 
          = "c:/kk/ReadAndWriteClass.txt";
           
          try {
             rwclass(inputPath, outputPath);
             System.out.println(
          "Successfully !");
           }
           catch (IOException ioe) {
             System.err.println(
          "Something wrong with reading or writing !");
             ioe.printStackTrace();
           }

           }

          }


          輸出:
          00000000h: CA FE BA BE 00 00 00 31 00 82 0A 00 29 00 3A 07 
          00000010h: 
          00 3B 0A 00 02 00 3A 09 00 28 00 3C 0A 00 3D 00 
          00000020h: 3E 0A 
          00 02 00 3F 08 00 40 0A 00 02 00 41 0A 00 
          00000030h: 
          02 00 42 07 00 43 07 00 44 0A 00 0B 00 45 0A 00 
          00000040h: 0A 
          00 46 07 00 47 07 00 48 0A 00 0F 00 45 0A 00 
          00000050h: 0E 
          00 49 08 00 4A 0A 00 0A 00 4B 0A 00 28 00 4C 
          00000060h: 0A 
          00 4D 00 4E 0A 00 3D 00 4F 0A 00 3D 00 50 08 
          00000070h: 
          00 51 0A 00 0E 00 52 0A 00 0E 00 53 0A 00 0A 00 
          00000080h: 
          54 0A 00 0E 00 54 08 00 55 08 00 56 0A 00 28 00 
          00000090h: 
          57 09 00 58 00 59 08 00 5A 0A 00 5B 00 5C 07 00 
          000000a0h: 5D 
          09 00 58 00 5E 08 00 5F 0A 00 23 00 60 08 00 
          000000b0h: 
          61 07 00 62 07 00 63 01 00 09 68 65 78 53 74 72 
          000000c0h: 
          69 6E 67 01 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 
          000000d0h: 2F 
          53 74 72 69 6E 67 3B 01 00 06 3C 69 6E 69 74 
          000000e0h: 3E 
          01 00 03 28 29 56 01 00 04 43 6F 64 65 01 00 
          000000f0h: 0F 4C 
          69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 
          00000100h: 
          01 00 06 65 6E 63 6F 64 65 01 00 17 28 5B 42 49 
          00000110h: 
          29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 
          00000120h: 6E 
          67 3B 01 00 07 72 77 63 6C 61 73 73 01 00 27 
          00000130h: 
          28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 
          00000140h: 6E 
          67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 
          00000150h: 
          72 69 6E 67 3B 29 56 01 00 0A 45 78 63 65 70 74 
          00000160h: 
          69 6F 6E 73 01 00 04 6D 61 69 6E 01 00 16 28 5B 
          00000170h: 4C 6A 
          61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 
          00000180h: 
          67 3B 29 56 01 00 08 3C 63 6C 69 6E 69 74 3E 01 
          00000190h: 
          00 0A 53 6F 75 72 63 65 46 69 6C 65 01 00 16 52 
          000001a0h: 
          65 61 64 41 6E 64 57 72 69 74 65 43 6C 61 73 73 
          000001b0h: 2E 6A 
          61 76 61 0C 00 2C 00 2D 01 00 17 6A 61 76 
          000001c0h: 
          61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 42 75 69 
          000001d0h: 6C 
          64 65 72 0C 00 2A 00 2B 07 00 64 0C 00 65 00 
          000001e0h: 
          66 0C 00 67 00 68 01 00 01 20 0C 00 67 00 69 0C 
          000001f0h: 
          00 6A 00 6B 01 00 1B 6A 61 76 61 2F 69 6F 2F 42 
          00000200h: 
          75 66 66 65 72 65 64 49 6E 70 75 74 53 74 72 65 
          00000210h: 
          61 6D 01 00 17 6A 61 76 61 2F 69 6F 2F 46 69 6C 
          00000220h: 
          65 49 6E 70 75 74 53 74 72 65 61 6D 0C 00 2C 00 
          00000230h: 6C 0C 
          00 2C 00 6D 01 00 16 6A 61 76 61 2F 69 6F 
          00000240h: 2F 
          42 75 66 66 65 72 65 64 57 72 69 74 65 72 01 
          00000250h: 
          00 12 6A 61 76 61 2F 69 6F 2F 46 69 6C 65 57 72 
          00000260h: 
          69 74 65 72 0C 00 2C 00 6E 01 00 07 30 30 30 30 
          00000270h: 
          30 30 30 0C 00 6F 00 70 0C 00 30 00 31 07 00 71 
          00000280h: 0C 
          00 72 00 73 0C 00 74 00 75 0C 00 76 00 77 01 
          00000290h: 
          00 04 30 68 3A 20 0C 00 78 00 6C 0C 00 79 00 2D 
          000002a0h: 0C 
          00 7A 00 2D 01 00 1D 63 3A 2F 6B 6B 2F 52 65 
          000002b0h: 
          61 64 41 6E 64 57 72 69 74 65 43 6C 61 73 73 2E 
          000002c0h: 
          63 6C 61 73 73 01 00 1B 63 3A 2F 6B 6B 2F 52 65 
          000002d0h: 
          61 64 41 6E 64 57 72 69 74 65 43 6C 61 73 73 2E 
          000002e0h: 
          74 78 74 0C 00 32 00 33 07 00 7B 0C 00 7C 00 7D 
          000002f0h: 
          01 00 0E 53 75 63 63 65 73 73 66 75 6C 6C 79 20 
          00000300h: 
          21 07 00 7E 0C 00 7F 00 6C 01 00 13 6A 61 76 61 
          00000310h: 2F 
          69 6F 2F 49 4F 45 78 63 65 70 74 69 6F 6E 0C 
          00000320h: 
          00 80 00 7D 01 00 29 53 6F 6D 65 74 68 69 6E 67 
          00000330h: 
          20 77 72 6F 6E 67 20 77 69 74 68 20 72 65 61 64 
          00000340h: 
          69 6E 67 20 6F 72 20 77 72 69 74 69 6E 67 20 21 
          00000350h: 0C 
          00 81 00 2D 01 00 10 30 31 32 33 34 35 36 37 
          00000360h: 
          38 39 41 42 43 44 45 46 01 00 11 52 65 61 64 41 
          00000370h: 6E 
          64 57 72 69 74 65 43 6C 61 73 73 01 00 10 6A 
          00000380h: 
          61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 01 
          00000390h: 
          00 10 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 
          000003a0h: 6E 
          67 01 00 06 63 68 61 72 41 74 01 00 04 28 49 
          000003b0h: 
          29 43 01 00 06 61 70 70 65 6E 64 01 00 1C 28 43 
          000003c0h: 
          29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 
          000003d0h: 6E 
          67 42 75 69 6C 64 65 72 3B 01 00 2D 28 4C 6A 
          000003e0h: 
          61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 
          000003f0h: 
          29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 
          00000400h: 6E 
          67 42 75 69 6C 64 65 72 3B 01 00 08 74 6F 53 
          00000410h: 
          74 72 69 6E 67 01 00 14 28 29 4C 6A 61 76 61 2F 
          00000420h: 6C 
          61 6E 67 2F 53 74 72 69 6E 67 3B 01 00 15 28 
          00000430h: 4C 6A 
          61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 
          00000440h: 
          67 3B 29 56 01 00 18 28 4C 6A 61 76 61 2F 69 6F 
          00000450h: 2F 
          49 6E 70 75 74 53 74 72 65 61 6D 3B 29 56 01 
          00000460h: 
          00 13 28 4C 6A 61 76 61 2F 69 6F 2F 57 72 69 74 
          00000470h: 
          65 72 3B 29 56 01 00 04 72 65 61 64 01 00 07 28 
          00000480h: 5B 
          42 49 49 29 49 01 00 11 6A 61 76 61 2F 6C 61 
          00000490h: 6E 
          67 2F 49 6E 74 65 67 65 72 01 00 0B 74 6F 48 
          000004a0h: 
          65 78 53 74 72 69 6E 67 01 00 15 28 49 29 4C 6A 
          000004b0h: 
          61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 
          000004c0h: 
          01 00 06 6C 65 6E 67 74 68 01 00 03 28 29 49 01 
          000004d0h: 
          00 09 73 75 62 73 74 72 69 6E 67 01 00 16 28 49 
          000004e0h: 
          49 29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 
          000004f0h: 
          69 6E 67 3B 01 00 05 77 72 69 74 65 01 00 07 6E 
          00000500h: 
          65 77 4C 69 6E 65 01 00 05 63 6C 6F 73 65 01 00 
          00000510h: 
          10 6A 61 76 61 2F 6C 61 6E 67 2F 53 79 73 74 65 
          00000520h: 6D 
          01 00 03 6F 75 74 01 00 15 4C 6A 61 76 61 2F 
          00000530h: 
          69 6F 2F 50 72 69 6E 74 53 74 72 65 61 6D 3B 01 
          00000540h: 
          00 13 6A 61 76 61 2F 69 6F 2F 50 72 69 6E 74 53 
          00000550h: 
          74 72 65 61 6D 01 00 07 70 72 69 6E 74 6C 6E 01 
          00000560h: 
          00 03 65 72 72 01 00 0F 70 72 69 6E 74 53 74 61 
          00000570h: 
          63 6B 54 72 61 63 65 00 21 00 28 00 29 00 00 00 
          00000580h: 
          01 00 0A 00 2A 00 2B 00 00 00 05 00 01 00 2C 00 
          00000590h: 2D 
          00 01 00 2E 00 00 00 1D 00 01 00 01 00 00 00 
          000005a0h: 
          05 2A B7 00 01 B1 00 00 00 01 00 2F 00 00 00 06 
          000005b0h: 
          00 01 00 00 00 07 00 09 00 30 00 31 00 01 00 2E 
          000005c0h: 
          00 00 00 76 00 04 00 04 00 00 00 46 BB 00 02 59 
          000005d0h: B7 
          00 03 4D 03 3E 1D 1B A2 00 35 2C B2 00 04 2A 
          000005e0h: 1D 
          33 11 00 F0 7E 07 7A B6 00 05 B6 00 06 57 2C 
          000005f0h: B2 
          00 04 2A 1D 33 10 0F 7E B6 00 05 B6 00 06 57 
          00000600h: 2C 
          12 07 B6 00 08 57 84 03 01 A7 FF CC 2C B6 00 
          00000610h: 
          09 B0 00 00 00 01 00 2F 00 00 00 1E 00 07 00 00 
          00000620h: 
          00 14 00 08 00 16 00 0F 00 18 00 23 00 19 00 34 
          00000630h: 
          00 1A 00 3B 00 16 00 41 00 1C 00 09 00 32 00 33 
          00000640h: 
          00 02 00 2E 00 00 01 0B 00 05 00 0A 00 00 00 AB 
          00000650h: BB 
          00 0A 59 BB 00 0B 59 2A B7 00 0C B7 00 0D 4D 
          00000660h: BB 
          00 0E 59 BB 00 0F 59 2B B7 00 10 B7 00 11 4E 
          00000670h: 
          10 10 36 04 15 04 BC 08 3A 05 12 12 3A 07 03 36 
          00000680h: 
          09 2C 19 05 03 15 04 B6 00 13 59 36 04 02 9F 00 
          00000690h: 
          64 19 05 15 04 B8 00 14 3A 06 15 09 B8 00 15 3A 
          000006a0h: 
          08 19 07 03 10 07 19 08 B6 00 16 64 B6 00 17 3A 
          000006b0h: 
          07 BB 00 02 59 B7 00 03 19 07 B6 00 08 19 08 B6 
          000006c0h: 
          00 08 B6 00 09 3A 07 BB 00 02 59 B7 00 03 19 07 
          000006d0h: B6 
          00 08 12 18 B6 00 08 19 06 B6 00 08 B6 00 09 
          000006e0h: 3A 
          06 2D 19 06 B6 00 19 2D B6 00 1A 84 09 01 A7 
          000006f0h: FF 
          92 2C B6 00 1B 2D B6 00 1C B1 00 00 00 01 00 
          00000700h: 2F 
          00 00 00 4E 00 13 00 00 00 28 00 10 00 2B 00 
          00000710h: 
          20 00 2E 00 24 00 2F 00 2A 00 31 00 2E 00 33 00 
          00000720h: 
          31 00 34 00 41 00 36 00 4A 00 37 00 51 00 38 00 
          00000730h: 
          61 00 39 00 77 00 3A 00 92 00 3B 00 98 00 3C 00 
          00000740h: 9C 
          00 3D 00 9F 00 3E 00 A2 00 3F 00 A6 00 40 00 
          00000750h: AA 
          00 41 00 34 00 00 00 04 00 01 00 23 00 09 00 
          00000760h: 
          35 00 36 00 01 00 2E 00 00 00 64 00 02 00 04 00 
          00000770h: 
          00 00 24 12 1D 4C 12 1E 4D 2B 2C B8 00 1F B2 00 
          00000780h: 
          20 12 21 B6 00 22 A7 00 10 4E B2 00 24 12 25 B6 
          00000790h: 
          00 22 2D B6 00 26 B1 00 01 00 06 00 13 00 16 00 
          000007a0h: 
          23 00 01 00 2F 00 00 00 26 00 09 00 00 00 4B 00 
          000007b0h: 
          03 00 4C 00 06 00 4F 00 0B 00 50 00 13 00 54 00 
          000007c0h: 
          16 00 51 00 17 00 52 00 1F 00 53 00 23 00 56 00 
          000007d0h: 
          08 00 37 00 2D 00 01 00 2E 00 00 00 1E 00 01 00 
          000007e0h: 
          00 00 00 00 06 12 27 B3 00 04 B1 00 00 00 01 00 
          000007f0h: 2F 
          00 00 00 06 00 01 00 00 00 0A 00 01 00 38 00 
          00000800h: 
          00 00 02 00 39 


          posted on 2008-02-26 06:58 々上善若水々 閱讀(763) 評論(0)  編輯  收藏 所屬分類: J2SE

          主站蜘蛛池模板: 石河子市| 新平| 泾源县| 宝应县| 鄯善县| 庐江县| 开江县| 怀柔区| 鱼台县| 南宁市| 叶城县| 永济市| 含山县| 涡阳县| 梅河口市| 大田县| 阿荣旗| 瓦房店市| 门源| 城固县| 蕲春县| 繁昌县| 耿马| 桑植县| 铜山县| 成安县| 信宜市| 新巴尔虎右旗| 凌源市| 同心县| 福州市| 汝城县| 杂多县| 沁水县| 栾川县| 林周县| 广南县| 清水县| 花莲县| 兴和县| 新巴尔虎右旗|