gpt4 book ai didi

java - 使用Java部署文本文件,它们应该位于哪里?

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

我有一个 Java 应用程序,它从名为 Country.txt 的文本文件中读取一些数据。在 Netbeans 中,该文件位于项目级文件夹下。现在我已经在 Netbeans 中对其进行了测试,我准备将其作为 jar 文件在不同的计算机上进行部署和测试。 dist 文件夹不包含文本文件,我已将其手动复制到 dist(作为 jar 文件的文件夹)和 dist\lib 文件夹,但出现“文件未找到”错误。我的文件没有路径信息,只是...

br = new BufferedReader(new FileReader("Countries.txt"));

对于 jar 文件,支持文件应该放在哪里?

最佳答案

“new File(..)”和类似的构造(如“new FileReader(..)”)始终构造相对于当前工作目录的路径(除非您传递绝对路径作为参数)。在 IDE 中,这主要是项目的根文件夹(至少在 Eclipse 中,根据您的描述,我假设也在 Netbeans 中)。

但是当您在 IDE 之外运行它时,当前工作目录是您启动 java.exe 的目录。

为了避免这些不一致,我建议将有问题的文件放入声明为类路径的文件夹中(-cp 命令行参数或在 jar 内的 manifest.mf 中定义)。然后您可以加载文件作为资源:

 this.getClass().getResourceAsStream( "myFile.txt");

编辑:

建议对只读资源使用上述方法。此类资源甚至可以放置在 jar 文件内的根文件夹中。

但是如果您必须编辑文件(并将其保存回某处),事情就会变得更加复杂。

独立的 java 应用程序通常具有如下文件夹布局:

myProject
bin
start.bat
lib
myApp.jar
cfg
myApp.properties

双击start.bat,你会发现当前目录是myProject/bin。知道这一点就很容易导航,例如到cfg目录:

new File(../cfg/myApp.properties)

这对于您的运行时安装有效。但在 IDE 中您可能有另一种布局:

myProject
prod
bin
start.bat
cfg
myApp.properties
src
...
test
...
lib
myApp.jar

如果您想在 IDE 中运行时保持相同的硬编码相对路径,则必须在 IDE 的 lauch 配置中配置工作目录。按照上面的示例(来自 eclipse 的示例):

Working directory = "${workspace_loc:MyProject/prod/bin}". 

在 Eclipse 中,这可以在第二个选项卡“参数”上的 Run/RunConfigurations 中完成。我确信 Netbeans 也有这样的可能性。

关于java - 使用Java部署文本文件,它们应该位于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45865168/

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