有什么方法可以显示用户,直接存储在我的 jar 应用程序包(org/something/something.txt)中的 .txt 文件的内容,而不将其存储在用户 pc 或任何临时文件上。文件?我想直接访问它。我应该将它作为资源访问吗?还是作为普通文件访问?
问问题
130 次
5 回答
2
您需要使用该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 中。否则,将其作为普通文件保存在磁盘上。
请阅读:Java 资源作为文件
于 2013-11-06T15:58:51.103 回答
1
使用类似的东西
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("file.txt");
于 2013-11-06T15:58:06.883 回答
1
是的,您可以将 .txt 文件存储在 .jar 文件中。
编辑:达里奥的回答。
于 2013-11-06T15:58:13.990 回答
1
如果文件在 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();
}
}
}
}
于 2013-11-06T16:09:33.543 回答
1
不,不要将文件作为资源检索。这将有效地防止你用它做任何其他事情。内容没有正确加载,这太说明问题了。
于 2013-11-06T16:00:02.250 回答