我的漫漫程序之旅

专注于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 々上善若水々 阅读(743) 评论(0)  编辑  收藏 所属分类: J2SE


只有注册用户登录后才能发表评论。


网站导航: