gpt4 book ai didi

java - 使用 getResourceAsStream() 到项目文件夹外部的文件的绝对路径

转载 作者:行者123 更新时间:2023-12-01 22:50:07 25 4
gpt4 key购买 nike

我想创建一个jar,它将读取txt fom jar,然后将txt文件保存到user.home文件夹中。当再次运行时,它将从 user.home 中读取文件。

我读了这样的文件:

if(getClass().getResourceAsStream("/"+System.getProperty("user.home")+"/"+file_name) == null){
configStream = getClass().getResourceAsStream(file_name);
} else {
configStream = getClass().getResourceAsStream(System.getProperty("user.home")+ "/"+file_name);
}
BufferedReader br = new BufferedReader(new InputStreamReader(configStream));

然后我像这样写入文件:

try {
BufferedWriter out = new BufferedWriter(new FileWriter(System.getProperty("user.home")+ "/" + file_name));
for (int j = 0; j < y; j++) {
for (int i = 0; i < x; i++) {
if (((Block) (listArray.get(i).get(j))).getState() == blockState.blank) {
out.write("0");
} else if (((Block) (listArray.get(i).get(j))).getState() == blockState.solid) {
out.write("1");
} else if (((Block) (listArray.get(i).get(j))).getState() == blockState.player) {
out.write("I");
} else if (((Block) (listArray.get(i).get(j))).getState() == blockState.spikes) {
out.write("^");
} else if (((Block) (listArray.get(i).get(j))).getState() == blockState.water) {
out.write("~");
} else if (((Block) (listArray.get(i).get(j))).getState() == blockState.transparent) {
out.write("T");
}
}
out.write("\n");
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}

我不知道为什么,但程序从不从 user.home 读取文件,它总是从项目文件夹中读取文件。我哪里出错了?谢谢

最佳答案

您不能使用getResourceAsStream位于不在 JVM 类路径内的位置。以下代码片段之所以有效,是因为 file_name 存在于 JVM 类路径中的某个位置。

getClass().getResourceAsStream(file_name);

在下一个代码片段中,您尝试执行的操作是使用当前类的类加载器来加载可能属于也可能不属于 JVM 类路径一部分的文件。

configStream = getClass().getResourceAsStream(System.getProperty("user.home")+ "/"+file_name);

将从该路径遍历的相对根节点也不能是 Controller 。使用 FileInputStream 并从绝对路径(如 /usr/local/file_name)加载文件。

关于java - 使用 getResourceAsStream() 到项目文件夹外部的文件的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24851461/

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