获取java项目中的包列表
问题描述:
我试图通过解析它(使用文件)从java src文件夹中获取包列表。无论封装结构如何(有些可能是com.example.abc,有些可能是com.example.xxyz.pqr,有些可能是com.application等)我想要得到软件包列表src文件夹。这是我写的功能。我得到非常奇怪的输出。请帮帮我。获取java项目中的包列表
public static void displayIt(File node) {
File[] subNode = node.listFiles();
if (subNode.length == 1) {
for (File file : subNode) {
if (file.isDirectory()) {
packageName = packageName + file.getName();
displayIt(file);
}
}
}
else {
subFolders = new ArrayList<String>();
for (File file : subNode) {
// parent.add(file.getName());
subFolders.add(file.getName());
if (file.isDirectory()) {
File[] subDir = file.listFiles();
for (File tempFile : subDir) {
if (tempFile.isDirectory()) {
// temp=file.getName()+"."+tempFile.getName();
packageList
.add(file.getName() + tempFile.getName());
displayIt(tempFile);
}
}
}
displayIt(file);
}
}
}
答
,你可以这样做:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Set<String> files=new HashSet<>();
listOfPackage("src/",files);
System.out.println(files);
}
public static void listOfPackage(String directoryName, Set<String> pack) {
File directory = new File(directoryName);
// get all the files from a directory
File[] fList = directory.listFiles();
for (File file : fList) {
if (file.isFile()) {
String path=file.getPath();
String packName=path.substring(path.indexOf("src")+4, path.lastIndexOf('\\'));
pack.add(packName.replace('\\', '.'));
} else if (file.isDirectory()) {
listOfPackage(file.getAbsolutePath(), pack);
}
}
}
}
输出:
[com.think.android, com.think.java, com.test.java]
+0
谢谢。你的解决方案帮了我很多。 – user1636077 2014-10-22 04:39:32
我认为它是由于'packageName'变量。它应该是displayIt函数 - >'displayIt(File node,String parentPackName)'的参数之一。 – 2014-10-22 03:49:33
什么是奇怪的输出? – Radiodef 2014-10-22 03:49:50
如果我有类似的包:** com.example.dao **,** com.example.service **,** com.ui ** ...我得到的输出(当我打印' packageList')like ** [exampledao,exampleservice] ** – user1636077 2014-10-22 04:02:41