当前页面: 开发资料首页 → J2SE 专题 → 大家有办法 把一个类加载之后 再输出成一个文件保存在硬盘里吗?
大家有办法 把一个类加载之后 再输出成一个文件保存在硬盘里吗?
摘要: 大家有办法 把一个类加载之后 再输出成一个文件保存在硬盘里吗?
大家有办法 把一个类加载之后 再输出成一个文件保存在硬盘里吗?
比如说.有
a.class
b.class
main() 在a.class 里.
在里面new 一个b b b1 = new b();
需要把用b1这个Class,把它输出成一个文件 保存在硬盘上..
package temp;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class A {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B b=new B(10);
try{
ObjectOutputStream d=new ObjectOutputStream(new FileOutputStream("file1"));
d.writeObject(b);
d.flush();
d.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
class B implements Serializable {
private int i=100;
private List list=new ArrayList();
B(int j){
list.add(j);
}
}
大哥.你很帅哈..不过我试过程序 生成出来的文件 与file1与 B.class 文件 不一样哈.(用UE对比过)..是不是要改一下下...
你要B.class啊。。。编译完硬盘上不就有了么
//javassit
import java.io.*;
import javassist.*;
public class SaveClass
{
public static void main(String[] args)
{
if(args.length<1) System.exit(0);
try
{
ClassPool cp=ClassPool.getDefault(null);
CtClass cc=cp.get(args[0]);
byte[] bytes=cc.toBytecode();
File f=new File(args[0]+".class");
DataOutputStream dos=new DataOutputStream(new FileOutputStream(f));
dos.write(bytes);
dos.close();
f.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
谢了哈 ..成功 了