`
minghe_zy
  • 浏览: 123912 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java读class的demo

 
阅读更多

1package bytecodeResearch;

  2

  3import java.io.BufferedInputStream;

  4import java.io.BufferedWriter;

  5import java.io.FileInputStream;

  6import java.io.FileWriter;

  7import java.io.IOException;

  8

  9public class ReadAndWriteClass {

  10

  11 //16进制数字字符集

  12 private static String hexString = "0123456789ABCDEF";

  13

  14 /** *//**

  15 * 将字节数组的指定长度部分编码成16进制数字字符串

  16 * @param buffer 待编码的字节数组

  17 * @param length 指定的长度

  18 * @return 编码后连接而成的字符串

  19 */

  20 public static String encode(byte[] buffer,int length)

  21 {

  22 StringBuilder sbr = new StringBuilder();

  23 //将字节数组中每个字节拆解成2位16进制整数

  24 for(int i=0;i

  25 {

  26 sbr.append(hexString.charAt((buffer[i]&0xf0)>>4));

  27 sbr.append(hexString.charAt(buffer[i]&0x0f));

  28 sbr.append(" ");

  29 }

  30 return sbr.toString();

  31 }

  32

  33 /** *//**

  34 * 读取一个Class文件,将其所有字节转换为16进制整数,并以字符形式输出

  35 * @param inputPath 输入文件的完整路径

  36 * @param outputPath 输出文件的完整路径

  37 * @throws IOException 读写过程中可能抛出的异常

  38 */

  39 public static void rwclass(String inputPath, String outputPath) throws IOException

  40 {

  41 //读取Class文件要用字节输入流

  42 BufferedInputStream bis = new BufferedInputStream(

  43 new FileInputStream(inputPath));

  44 //输出转换后的文件要用字符输出流

  45 BufferedWriter bw = new BufferedWriter(

  46 new FileWriter(outputPath));

  47

  48 int readSize = 16;

  49 byte[] buffer_read = new byte[readSize];

  50 String line;

  51 String lineNumber = "0000000";

  52 String strReplace;

  53 int i = 0;

  54 while ((readSize = bis.read(buffer_read,0,readSize))!= -1)

  55 {

  56 line = encode(buffer_read,readSize);

  57 strReplace = Integer.toHexString(i);

  58 lineNumber = lineNumber.substring(0, 7-strReplace.length());

  59 lineNumber = lineNumber+strReplace;

  60 line = lineNumber+"0h: "+line;

  61 bw.write(line);

  62 bw.newLine();

  63 i++;

  64 }

  65 bis.close();

  66 bw.close();

  67 }

  68

  69 /** *//**

  70 * 程序的入口方法

  71 * @param args

  72 * @throws IOException

  73 */

  74 public static void main(String[] args)

  75 {

  76 //指定输入、输出文件的完整路径

  77 String inputPath = "L:/HelloWorld/HelloWorld.class";

  78 String outputPath = "L:/HelloWorld/HelloWorld_ByteCode.txt";

  79

  80 try {

  81 rwclass(inputPath, outputPath);

  82 System.out.println("Successfully !");

  83 } catch (IOException ioe) {

  84 System.err.println("Something wrong with reading or writing !");

  85 ioe.printStackTrace();

  86 }

  87

  88 }

  89

  90}

<!--EndFragment-->
分享到:
评论

相关推荐

    ASM操作字节码,动态生成Java类class文件

    ASM操作字节码,动态生成Java类class文件,模拟Spring的AOP实现原理。

    Jdk 动态编译 Java 源码测试 Demo

    Jdk 动态编译 Java 源码测试 Demo 通过 Jdk 工具类,直接将 Java 源码编译为 Class 字节码,并可加载为 Class 对象; 实例化后,可调用实例对象的方法 通过上面的实现,可以在线动态修改源码,并触发编译,加载到...

    demo1.class

    java面对像 幸运抽奖系统

    自定义Java类加载器demo

    自定义Java类加载器demo,自定义了一个classLoader,重写了loadClass 和findClass,注意 loadClass打破了双亲委派机制,所有的类都要在自定义的class文件中找到,而findClass遵循了双亲委派机制

    java自定义弹窗Demo

    java自定义弹窗Demo,主要代码: thisDialog = this; this.setTitle("提示"); this.setSize(300, 150); this.setModal(true); this.setLocationRelativeTo(c); actionL = new ActionListener...

    Java+海康SDK DEMO

    Java SpringBoot框架+海康SDK Linux版本代码,集成了所需的告警DEMO(存储在influxDB)。有获取该NVR下所有设备的接口,以及获取该NVR下某个时间段的视频文件下载,并转成MP4文件。

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

    rtasr_java_demo_wss(实时语音转写demo).zip

    rtasr_java_demo_wss(实时语音转写demo).zip

    Class-Demo---student-achievement.zip_DEMO_class StudentDemo_stud

    Class Demo - student achievement类的演示--学生学生成绩,java程序代码

    webuploader java前后端完整DEMO

    有pom 的全部依赖文件,有完整的css、js,以及demo脚本,我的后端是smm的框架,只贴出了相关的全部代码示例,一看就懂。在配置过程中,如果使用springMVC,需要配置 springMultipartFile的bean, ...

    webuploader java前后端完整demo

    有pom 的全部依赖文件,有完整的css、js,以及demo脚本,我的后端是smm的框架,只贴出了相关的全部代码示例,一看就懂。在配置过程中,如果使用springMVC,需要配置 springMultipartFile的bean, ...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

    微信公众号-h5支付(完整demo+代码说明+Java版本)

    本代码为本人最近开发用过的demo,前端后端的代码都已包括,只需根据自己的需求稍作修改即可;

    java控制扫描仪控件(附:程序源代码)

    ScanTwice.java,DemoFrame.java,DemoADF.java,DemoFrame.java,DemoGetCapabilities.java,DemoHiddenUI.java,ImageDisplayer.java,DemoSaveJPEG.java等等一系列扫描仪功能,所有的.java文件都封装在demo-...

    java调用DDL的简单demo

    Test.class 是java生成的编译文件 Test.dll 是c编译的动态链接库文件(32位系统) 以上仅在32位window系统上可以运行,64位则需在64位的vc下编译 详情参考 http://blog.csdn.net/zjcjava/article/details/47164881

    gradle-`demo.zip

    gradle-demo.zip 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .classpath │ .gitignore │ .project │ .txt │ build.gradle │ gradlew │ gradlew.bat │ settings.gradle │ ├─.gradle │ ├─4.8.1 │ ...

    springboot-demo

    my_demo.sql内含有表结构文件,class、student表; 实现功能: 班级的crud,学生的crud,班级可以添加学生,根据学生可以查找到所 在的班级; 使用框架技术: springboot+mybatis 目的: 尽快熟悉springboot的使用。

    demo..java

    public class Demo { public static void main(String[] args) { /* Cell c = new Cell(); Cell cc = c; //指向同一个对象 cc.row = 5; c.row = 8; System.out.println(cc.row); //8 int num = 8;...

    jedis调用redis源码Demo

    jedis调用redis源码Demo,直接导入工程就可以运行。 redis目录下有redis安装文件和入门电子书 redis64-2.8.9.zip redisbin_x32.zip Redis入门指南(JB51.NET).pdf Redis设计与实现.pdf src: FirestJedisTest.java ...

Global site tag (gtag.js) - Google Analytics