gpt4 book ai didi

java - 如何使用相对路径读取可执行jar之外的文本文件

转载 作者:行者123 更新时间:2023-12-01 20:53:31 25 4
gpt4 key购买 nike

我有一个java项目结构,在eclipse中构建如下

--Workspace/ProjectName/bin(Where .class files exist)
|
/src(where source files i.e, java files exist)
|
/text(where a .txt file named Requests.txt present)
|
/common.properties(A property file)

当我使用

检查当前位置时
URL location = FileToString.class.getProtectionDomain().getCodeSource().getLocation();

得到的o/p为文件:/D:/Workspace_Nandan/ProjectName/bin/

所以,我使用了代码

contents = new String(Files.readAllBytes(Paths.get("../ProjectName/text/Requests.txt")));

具有相对路径../ProjectName/text/Requests.txt,如上所述。它工作正常,当我运行它时它正在读取文本文件。

但是当我将项目转换为代码中具有相同相对路径的可执行 jar 并将其放置在相同的 bin 文件夹和 Requests.txt 内时,情况也是一样的strong>ProjectName/text 文件夹无法访问提到的文本文件。

抛出java.nio.file.NoSuchFileException

我应该对可执行 jar 的相对路径进行任何更改吗?我尝试了 stackoverflow 中给出的许多解决方案,但发现它对我的问题没有用/合适。

请帮忙。提前致谢。

最佳答案

这取决于您当前的工作目录。如果您在 Workspace/ProjectName 下执行 jar 作为 java -jar bin/"yourjarname".jar ,则获取所需文件的路径应该是“text/Requests.txt”。您的 IDE 在 Workspace/ProjectName 下工作,当您从那里执行时,这是您在 java 中的当前目录。

关于java - 如何使用相对路径读取可执行jar之外的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42811435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com