【发布时间】:2014-09-11 03:40:59
【问题描述】:
我想创建一个 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 读取文件,它总是从项目文件夹中读取一个。我在哪里犯错了?谢谢
【问题讨论】:
-
如何将 txt 保存到 user.home ?您的代码不包含保存部分。
-
你确定循环真的被执行了吗?尝试在循环之外写一些东西。
-
为什么要从文件系统中读取文件作为资源?
标签: java file-io getresource