package main.coding_170327.loader; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by peter on 2017/4/20. */ public class ClassFileLoader { private List<String> clzPaths = new ArrayList<>(); public byte[] readBinaryCodes(String className){ className = className.replace('.', File.separatorChar)+".class"; for(String singlePath:clzPaths){ String clzFileName = singlePath + File.separatorChar +className; byte[] codes = loadClassFile(clzFileName); if(codes!=null){ return codes; } } return null; } public byte[] loadClassFile(String clzFileName){ File file = new File(clzFileName); try { return IOUtils.toByteArray(new FileInputStream(file)); } catch (IOException e) { e.printStackTrace(); } return null; } public void addClassPath(String path){ if(this.clzPaths.contains(path)){ return; } clzPaths.add(path); } public String getClassPath_V1(){ StringBuffer buffer = new StringBuffer(); for(int i=0;i<this.clzPaths.size();i++){ buffer.append(this.clzPaths.get(i)); if(i<this.clzPaths.size()-1){ buffer.append(";"); } } return buffer.toString(); } public String getClassPath(){ return StringUtils.join(clzPaths,";"); } }