java - 项目包内文件的绝对路径

标签 java file jar path absolute

我使用以下代码在项目包内创建了一个文件:

File xmlFile = new File("src/com/company/project/xml/tags.xml");

我能够在从 Eclipse 运行时读取该文件。但是,创建 .jar 后,我无法读取该文件。所以我想在从项目包中读取文件时输入绝对路径。怎样才能做到呢?感谢帮助和建议。

最佳答案

在大多数情况下,IDE 在生成的 Jar 中不会包含任何 Java 文件。当您从其中运行/调试程序时,大多数 IDE 还会在类路径中包含 src 目录。

作为一般经验法则,切勿在任何路径中包含 src,一旦程序构建,src 将根本不存在。

相反,您需要根据您的需要使用 Class#getResourceClass#getResourceAsStream。您应该记住,您永远不应该将“嵌入”资源视为文件,因为在大多数情况下不会如此,它将是 zip 文件中的字节流。

类似...

URL xmlFile = getClass().getResource("/com/company/project/xml/tags.xml");

将返回对资源的URL引用。请记住,如果您需要 InputStream,则必须 Class#getResourceAsStream

如果您希望资源可写,那么您将需要找到一个不同的位置来存储它,因为嵌入式资源是只读的

关于java - 项目包内文件的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35099268/

相关文章:

java - 为什么我们有输出 : S1S2 in this case?

java - Java泛型中的 '&'和 ','有什么区别?

c - 将文件读入 C 中的结构数组

java - 有没有什么方法可以使用java api在文本文件中定位带有行号的行?

java - 如何使用 OOP 概念使用 ArrayList 对象将值传递到数据库

java - 选择图像时的 NPE

file - 如何在IntelliJ IDEA中设置默认系统文件编码

java - 运行 "jar cf"后内部类不包含在 JAR 文件中

java - 如何使用 maven 下载 JavaMail (mail.jar) 和 JAF (activation.jar)

java - .jar 文件夹如何可移植?