`
minghe_zy
  • 浏览: 125923 次
  • 性别: 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-->
分享到:
评论

相关推荐

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    给初学者的java回调demo

    这篇"给初学者的Java回调demo"将帮助你深入理解这个概念。 首先,让我们定义什么是回调。在编程中,回调是一种函数或方法的引用,它作为参数传递给其他函数。当这个其他函数执行到一定程度时,它会调用我们传递的回...

    Java中通过Class类获取Class对象的方法详解

    "Java中通过Class类获取Class对象的方法详解" Java中获取Class对象是Java基础知识中的一个重要部分,通过Class类可以获取Class对象,Class对象是Java虚拟机在加载类时自动构造的。下面将详细介绍通过Class类获取...

    java 连接mysql demo和所有jar

    在这个"java连接mysql demo和所有jar"的压缩包中,包含了实现这一功能所需的示例代码和必要的库文件。下面我们将深入探讨相关知识点。 首先,Java连接MySQL主要依赖于`JDBC`(Java Database Connectivity),它是...

    java反射的demo代码

    在上面的代码中,我们首先通过`Class.forName()`加载了名为`DemoClass`的类。然后,我们获取了该类的无参数构造器并创建了一个新的对象。接着,我们使用`getMethod()`方法找到了名为`demoMethod`的方法,并传递了一...

    java二维码生成demo

    Java二维码生成Demo是一种在Java编程环境中创建二维码图像的示例代码。二维码,全称为“Quick Response Code”,是一种二维条码,能存储大量的信息,如文本、URL、联系人信息等,广泛应用于移动支付、产品追溯等领域...

    java发送邮件Demo

    本示例“java发送邮件Demo”旨在教你如何利用JavaMail API实现这个功能。JavaMail API是一个开源库,允许开发者通过SMTP(简单邮件传输协议)发送、接收和管理邮件。 首先,确保在项目中引入JavaMail API的相关依赖...

    java 串口通信 rxtx demo

    在这个“java 串口通信 rxtx demo”中,我们将深入探讨如何使用RXTX库来实现Java串口通信。 首先,让我们了解串口通信的基础知识。串口通信是一种点对点的数据传输方式,通常用于设备之间的短距离通信,如打印机、...

    JAVA调用C++demo

    public class NativeDemo { static { System.loadLibrary("cppdemo"); // 加载C++编译生成的库 } public native void callCppFunction(); } ``` 这里,`callCppFunction`就是我们将要调用的C++函数,`...

    java生成二维码demo带jar包

    本教程将基于提供的"java生成二维码demo带jar包"来详细介绍如何在Java中生成二维码,以及如何运行这个Demo。 首先,`QRUtil.java`是包含二维码生成逻辑的核心类。在Java中生成二维码,通常会使用第三方库,比如`...

    java调用Zebra Demo

    在Java中,通过`Class.forName()` 或者 `ClassLoader.loadClass()` 方法可以加载这些类,进而调用其中的方法实现打印功能。 `.settings` 文件夹则可能包含Eclipse等IDE的项目配置信息,这些信息用于管理项目的构建...

    java生成protobufdemo直接运行

    Java生成protobuf demo直接运行的教程 protobuf,全称Protocol Buffers,是Google开发的一种数据序列化协议,类似于XML和JSON,但更小巧、快速且高效。它允许开发者定义数据结构,然后生成相应的代码,用于在各种...

    java连接Mysql数据库Demo

    本Demo将向你展示如何使用Java通过JDBC连接到MySQL数据库,执行SQL语句并处理结果。 首先,我们需要理解JDBC的核心概念。JDBC是一个API,它提供了在Java应用程序中访问各种数据库的一致方法。它包括一组Java类和...

    Java策略模式Demo

    在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。这种模式的核心是策略接口和实现策略的类。 策略模式的关键组成部分包括: 1. **...

    java连接数据库Demo

    在Java 6及之前版本,需要通过`Class.forName()`方法加载;而在Java 7及以上版本,可以使用`DriverManager.getConnection()`方法自动加载。 3. **数据库连接**: 使用`DriverManager.getConnection()`方法创建数据库...

    JNI,java调用c Demo

    在这个"JNI,java调用c Demo"中,我们将探讨如何设置和使用JNI来让Java程序调用C代码。 首先,我们需要理解JNI的工作原理。JNI提供了一种接口,使得Java虚拟机(JVM)能够调用本地(native)代码,也就是非Java的...

    树形结构设计总结java demo

    总结来说,“树形结构设计总结java demo”可能涵盖了如何在Java中创建树形结构、进行基本操作、以及可能的高级应用。通过分析“tms”文件中的源代码,我们可以更深入地学习和理解这些概念,提高我们的编程技能。对于...

    java proxy demo 代理类的运用demo

    在这个“java proxy demo”中,我们将深入探讨如何利用Sun JDK API来创建和使用Java动态代理。 首先,我们要了解Java代理的基本概念。Java代理分为静态代理和动态代理两种。静态代理是在编译时就已经确定代理类的...

    4个java经典demo

    这个名为"4个java经典demo"的资源是为初学者准备的,旨在帮助他们快速掌握Java的基础语法。以下是对这四个经典Java Demo的详细解读: 1. **Hello, World!** 这通常是学习任何编程语言的第一个示例。在Java中,...

    ClassFinal是一款java_class文件安全加密工具,支持直接加密jar包或war包

    ClassFinal是一款java_class文件安全加密工具,支持直接加密jar包或war包,无需_classfinal

Global site tag (gtag.js) - Google Analytics