获取java项目中的包列表

时间:2014-10-22 03:45:30

标签: java

我试图通过解析它(使用Files)从java src文件夹中获取包列表。无论封装结构如何(有些可能是 com.example.abc ,有些可能是 com.example.xxyz.pqr ,有些可能是 com.application < / strong>等)我想获取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);
        }
    }

}

2 个答案:

答案 0 :(得分:5)

你可以这样做:

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]

答案 1 :(得分:0)

列出所有软件包

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: hello-world.info
    http:
      paths:
      - path: /
        backend:
          serviceName: web
          servicePort: 8080

结果

   public class q {
        public static void main(String args[]) {
            Package[] pack = Package.getPackages();

          // print all packages, one by one
            for (int i = 0; i < pack.length; i++) {
                String a = pack[i].toString()  ;
                System.out.println(a.replaceAll("package ", ""));
            }
        }
    }