1.classinappå®å5.1ä¸è½å®è£
2.遍历信息显示包名是怎么回事
classinappå®å5.1ä¸è½å®è£
ç³»ç»ä¸æ¯æãclassinappå®å5.1æ¯ä¸ä¸ªæ°åºççæ¬ï¼ç±äºè¿ä¸ªç³»ç»ä¸æ¯æï¼æ以ä¸è½å®è£ ãå®åæ¯ä¸ç§åºäºLinuxçèªç±åå¼æ¾æºä»£ç çæä½ç³»ç»ã
遍历信息显示包名是怎么回事
如果你看过一些框架的源码,就知道大多数情形时他们都是googledoc源码先找到某个包的对应的文件位置,并遍历其下面的图像分割opencv源码文件,读取其文件名,微博兴趣源码对应的传奇源码泄漏事件就是类名。 /** @(#)PackageUtil.java 1. --
*
* Copyright (c) Shenzhen Surfilter Network Technology Co.,源码编据器Ltd. All rights reserved.
*/
package org.rut.core;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
/**
* @since --
* @author wushugen
*
* Modified History:
*
*/
public class PackageUtil {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
List<String> cls = getClassInPackage("java.util");
for(String s:cls){
System.out.println(s);
}
}
public static List<String> getClassInPackage(String pkgName) {
List<String> ret = new ArrayList<String>();
String rPath = pkgName.replace('.', '/') + "/";
try {
for (File classPath : CLASS_PATH_ARRAY) {
if(!classPath.exists()) continue;
if (classPath.isDirectory()) {
File dir = new File(classPath, rPath);
if(!dir.exists()) continue;
for (File file : dir.listFiles()) {
if (file.isFile()) {
String clsName = file.getName();
clsName = pkgName+"." +clsName.substring(0, clsName.length() - 6);
ret.add(clsName);
}
}
} else {
FileInputStream fis = new FileInputStream(classPath);
JarInputStream jis = new JarInputStream(fis, false);
JarEntry e = null;
while ((e = jis.getNextJarEntry()) != null) {
String eName = e.getName();
if (eName.startsWith(rPath) && !eName.endsWith("/")) {
ret.add(eName.replace('/', '.').substring(0,eName.length()-6));
}
jis.closeEntry();
}
jis.close();
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return ret;
}
private static String[] CLASS_PATH_PROP = { "java.class.path", "java.ext.dirs",
"sun.boot.class.path" };
private static List<File> CLASS_PATH_ARRAY = getClassPath();
private static List<File> getClassPath() {
List<File> ret = new ArrayList<File>();
String delim = ":";
if (System.getProperty("os.name").indexOf("Windows") !=-1)
delim = ";";
for (String pro : CLASS_PATH_PROP) {
String[] pathes = System.getProperty(pro).split(delim);
for (String path : pathes)
ret.add(new File(path));
}
return ret;
}
}