📄 class2html.java
字号:
package de.fub.bytecode.util;import java.io.*;import java.util.BitSet;import de.fub.bytecode.classfile.*;import de.fub.bytecode.Constants;/** * Read class file(s) and convert them into HTML files. * * Given a JavaClass object "class" that is in package "package" five files * will be created in the specified directory. * * <OL> * <LI> "package"."class".html as the main file which defines the frames for * the following subfiles. * <LI> "package"."class"_attributes.html contains all (known) attributes found in the file * <LI> "package"."class"_cp.html contains the constant pool * <LI> "package"."class"_code.html contains the byte code * <LI> "package"."class"_methods.html contains references to all methods and fields of the class * </OL> * * All subfiles reference each other appropiately, e.g. clicking on a * method in the Method's frame will jump to the appropiate method in * the Code frame. * * @version $Id: Class2HTML.java,v 1.2 2001/05/09 09:26:57 dahm Exp $ * @author <A HREF="http://www.berlin.de/~markus.dahm/">M. Dahm</A> */public class Class2HTML implements Constants{ private JavaClass java_class; // current class object private String dir; private static String class_package; // name of package, unclean to make it static, but ... private static String class_name; // name of current class, dito private static ConstantPool constant_pool; /** * Write contents of the given JavaClass into HTML files. * * @param java_class The class to write * @param dir The directory to put the files in */ public Class2HTML(JavaClass java_class, String dir) throws IOException { Method[] methods = java_class.getMethods(); this.java_class = java_class; this.dir = dir; class_name = java_class.getClassName(); // Remember full name constant_pool = java_class.getConstantPool(); // Get package name by tacking off everything after the last `.' int index = class_name.lastIndexOf('.'); if(index > -1) class_package = class_name.substring(0, index); else class_package = ""; // default package ConstantHTML constant_html = new ConstantHTML(dir, class_name, class_package, methods, constant_pool); /* Attributes can't be written in one step, so we just open a file * which will be written consequently. */ AttributeHTML attribute_html = new AttributeHTML(dir, class_name, constant_pool, constant_html); MethodHTML method_html = new MethodHTML(dir, class_name, methods, java_class.getFields(), constant_html, attribute_html); // Write main file (with frames, yuk) writeMainHTML(attribute_html); new CodeHTML(dir, class_name, methods, constant_pool, constant_html); attribute_html.close(); } public static void main(String argv[]) { String[] file_name = new String[argv.length]; int files=0; ClassParser parser=null; JavaClass java_class=null; String zip_file = null; char sep = System.getProperty("file.separator").toCharArray()[0]; String dir = "." + sep; // Where to store HTML files try { /* Parse command line arguments. */ for(int i=0; i < argv.length; i++) { if(argv[i].charAt(0) == '-') { // command line switch if(argv[i].equals("-d")) { // Specify target directory, default `.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -