首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取java项目中的包列表。

获取java项目中的包列表。
EN

Stack Overflow用户
提问于 2014-10-22 03:45:30
回答 2查看 2.1K关注 0票数 2

我试图通过解析(使用Files)从java src文件夹获取包列表。与包结构无关(有些可能是com.example.abc,,有些可能是com.example.xxyz.pqr,,有些可能是com.application等)。我想得到src文件夹中的包列表。这是我写的函数。我得到了非常奇怪的结果。请帮帮我。

代码语言:javascript
运行
复制
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);
        }
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-22 04:34:42

你可以这样做:

代码语言:javascript
运行
复制
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);
            }
        }
    }
}

产出:

代码语言:javascript
运行
复制
[com.think.android, com.think.java, com.test.java]
票数 8
EN

Stack Overflow用户

发布于 2020-02-23 12:11:26

列出所有包

代码语言:javascript
运行
复制
   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 ", ""));
            }
        }
    }

结果

代码语言:javascript
运行
复制
java.util.jar
jdk.internal.perf
sun.nio.fs
sun.invoke.empty
sun.security.action
java.lang
jdk.internal.jrtfs
java.util.function
java.security
java.util.regex
jdk.internal.reflect
sun.util.calendar
jdk.internal.misc
jdk.internal.ref
java.util.zip
java.math
sun.security.util
java.time.chrono
sun.util.locale
java.util.concurrent.atomic
sun.nio.ch
jdk.internal.org.objectweb.asm
sun.reflect.annotation
jdk.internal.vm
java.util.concurrent.locks
java.lang.constant
java.nio
jdk.internal.loader
java.time.temporal
sun.net.util
java.nio.charset
jdk.jfr.internal
jdk.internal.math
sun.io
java.io
sun.net.www
java.nio.file.attribute
sun.nio.cs
java.nio.channels
java.nio.channels.spi
jdk.internal.util.jar
jdk.internal.access
java.util.stream
jdk.internal.util
sun.net.www.protocol.file
java.lang.ref
java.nio.file.spi
java.lang.reflect
sun.util
java.time.zone
sun.launcher
sun.net.www.protocol.jrt
java.lang.module
java.util
jdk.internal.jimage.decompressor
java.time
java.nio.charset.spi
java.security.cert
sun.net.www.protocol.jar
java.nio.file
sun.reflect.misc
java.lang.invoke
sun.invoke.util
java.lang.annotation
jdk.internal.jimage
jdk.internal.module
java.net
java.util.concurrent
javax.lang.model.util
javax.tools
javax.lang.model
javax.lang.model.type
jdk.nio.zipfs
javax.lang.model.element
com.sun.tools.javac.tree
com.sun.tools.javac.launcher
com.sun.tools.javac.main
com.sun.tools.javac.parser
com.sun.tools.javac.platform
com.sun.tools.javac.processing
com.sun.tools.javac.file
com.sun.tools.javac.api
com.sun.source.util
com.sun.source.tree
com.sun.tools.javac.jvm
com.sun.tools.doclint
com.sun.tools.javac.model
com.sun.tools.javac.comp
com.sun.tools.javac.code
com.sun.tools.javac.resources
com.sun.tools.javac.util
com.sun.source.doctree
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26500004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档