【发布时间】:2013-11-17 22:58:39
【问题描述】:
有什么方法可以显示用户,.txt 文件的内容直接存储在我的 jar 应用程序包 (org/something/something.txt) 中,而不将其存储在用户 pc 或任何临时文件上。文件?我想直接访问它。 我应该将其作为资源访问吗?还是作为普通文件访问?
【问题讨论】:
标签: java file resources embedded-resource
有什么方法可以显示用户,.txt 文件的内容直接存储在我的 jar 应用程序包 (org/something/something.txt) 中,而不将其存储在用户 pc 或任何临时文件上。文件?我想直接访问它。 我应该将其作为资源访问吗?还是作为普通文件访问?
【问题讨论】:
标签: java file resources embedded-resource
如果文件在 src/org/something/something.txt 中
你可以这样称呼它
public static void main(String[] args) {
InputStream inputStream = null;
BufferedReader br = null;
try {
inputStream = AClassYouAreRunningThisFrom.class.getClassLoader().getResourceAsStream("org/something/something.txt");
br = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
System.out.println(sb.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
【讨论】:
您需要使用getResourceAsStream()方法获取InputStream。
然后,您可以使用BufferedReader阅读文本
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("file.txt");
BufferedReader buf = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while((line = buf.readLine()) != null){
// something
}
我应该将它作为资源访问吗?还是作为普通文件访问?
据我所知,视情况而定。如果您根本不希望文件更改,请将其嵌入到 jar 中。否则,将其作为普通文件保存在磁盘上。
【讨论】:
不,不要将文件作为资源检索。这将有效地防止你用它做任何其他事情。内容没有正确加载,这太说明问题了。
【讨论】:
是的,您可以将 .txt 文件存储在 .jar 文件中。
编辑:达里奥的回答。
【讨论】:
使用类似的东西
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("file.txt");
【讨论】: