我试图通过解析(使用文件)从 java src 文件夹中获取包列表。不考虑包结构(有些可能是com.example.abc,有些可能是com.example.xxyz.pqr,有些可能是com.application 等)我想获取 src 文件夹中的包列表。这是我写的函数。我得到非常奇怪的输出。请帮助我。
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]
关于java - 获取java项目中的包列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26500004/