java - 获取java项目中的包列表

标签 java

我试图通过解析(使用文件)从 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/

相关文章:

java - 使用sql比较java中的日期与当前日期

java - IF 语句给出无法解析 PDFDocument 中的符号

java - Android LibGDX 'Cannot resolve symbol setRadius'

JavaFX 绕其角旋转矩形

java - 服务器数据未到来 : Angular2

java - 如何在列表字段中单击时添加复选框

java - jackson 为列表添加包装器

java - Spring:无法加载ApplicationContext

java - 使用 ScheduledExecutorService 以固定间隔并行运行多个线程

java - Enunciate 能否为处理泛型类型的 API 生成文档?