【问题标题】:Get Resource (in project root path) from jar file从 jar 文件中获取资源(在项目根路径中)
【发布时间】:2016-04-13 11:43:45
【问题描述】:

我想从我正在运行的 jar 中读取一个文本文件 (input.txt)。

我确实阅读了很多类似的问题,但没有一个可以帮助我解决我的具体问题。

文件夹结构是这样的:

D:\Users\Nathaniel\git\projectfolder\src\main\java\folder1\folder2\files.java

我的 input.txt 文件在项目文件夹中。

主要方法是files.java。

我确实尝试过各种解决方案: 例如:

InputStream is = new FileInputStream("input.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));

或者:

Enumeration<URL> en = getClass().getClassLoader()
                .getResources("");
        List<String> profiles = new ArrayList<>();
        System.out.println("vor while");
        if (en.hasMoreElements()) {
            System.out.println("in while");
            URL url = en.nextElement();
            JarURLConnection urlcon = (JarURLConnection) (url.openConnection());
            try (JarFile jar = urlcon.getJarFile();) {
                Enumeration<JarEntry> entries = jar.entries();
                while (entries.hasMoreElements()) {
                    String entry = entries.nextElement().getName();
                    System.out.println(entry);
                }
            }
        }

当我从 eclipse 和 jar 文件运行程序时,是否有可行的解决方案?

【问题讨论】:

    标签: java jar path resources inputstream


    【解决方案1】:

    你能把你的文件放在资源文件夹(src/main/resources)吗?这样你可以检索:

    BufferedReader reader = 
                    new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/input.txt")));
            System.out.println(reader.readLine());
            reader.close();
    

    【讨论】:

    • 你到底是什么意思? input.txt 与 jar 文件位于同一文件夹中,但不在 jar 文件中?该代码应该可以在许多不同的计算机上运行。
    猜你喜欢
    • 1970-01-01
    • 2011-04-25
    • 2010-10-30
    • 1970-01-01
    • 2012-05-13
    • 2021-12-21
    • 2015-05-11
    • 2020-11-26
    • 2019-11-08
    相关资源
    最近更新 更多