在这个话题上有很多困惑。已经提出了几个问题。事情似乎仍然不清楚。ClassLoader,绝对文件路径等
假设我有一个项目目录结构,
我的项目 -
--dist
--lib
--src
- 测试
我在“ lib / txt”目录中有一个资源说“
txtfile.txt”。我想以系统独立的方式访问它。我需要项目的绝对路径。所以我可以将路径编码为abspath +“ / lib / Dictionary
/ txtfile.txt”
假设我这样做
java.io.File file = new java.io.File(""); //Dummy file
String abspath=file.getAbsolutePath();
我得到当前的工作目录,它不一定是项目根目录。
假设我从’dist’文件夹执行了最后的’prj.jar’,该文件夹也包含“ lib / txt /
txtfile.txt”目录结构和资源,它也应该在这里工作。我应该是dist文件夹的绝对路径。
希望问题解决。
实际上,您应该通过类加载器使用getResource()或getResourceAsStream()来进行此类操作。特别是,这些方法使用ClassLoader来确定项目内资源的搜索上下文。
指定类似getClass().getResource("lib/txtfile.txt")
的内容以拾取文本文件。
需要澄清的是:与其考虑如何获取资源的路径,不如考虑获取资源的方法-
在这种情况下,该文件位于某个目录(可能在您的JAR内部)中的文件中。在这种情况下,不必知道某些绝对路径,只需知道一些URL即可获取文件,ClassLoader会为您返回此URL。如果您想打开文件流,则可以直接执行此操作,而无需使用来弄乱URL
getResourceAsStream
。
您试图通过ClassLoader访问的资源必须位于Class-Path(在JAR文件的清单中配置)上。这很关键!ClassLoader使用Class-
Path查找资源,因此,如果您没有在Class-
Path中提供足够的上下文,它将无法找到任何内容。如果您html" target="_blank">添加.
了ClassLoader,则应该根据引用资源的方式来解析JAR内部或外部的所有内容,尽管您当然可以更加具体。
引用带有前缀的资源.
将导致ClassLoader也在JAR文件之外查找文件,而没有为资源路径加上句点前缀将指示ClassLoader仅在JAR文件内部查找文件。
这意味着,如果你有一些文件 中 的目录中JAR
lib
与名称foo.txt
,你想要得到的资源,那么你会运行getResource("lib/foo.txt");
如果相同的资源不在JAR中,则运行 getResource("./lib/foo.txt");
假设标准maven设置。 在Java中,我如何获得文件的绝对路径?
问题内容: 嗨,我需要使用FileInputStream读取文件,但是我没有获得正确的路径。我的文件位于C:\ Users \ tester \ Documents \ Java Project \ Samples \ ProjectOne \ src \ pdfReader中。但是,当我使用以下代码时,我得到的错误路径是“ / C:/ Users / tester / Documents / J
问题内容: 我正在尝试在当前包外部的路径中运行exe文件。我运行它的code.java文件在 但是exe所在的目录 如果可能的话,似乎最好的解决方案是获取Project的绝对路径,然后在其中添加“ src \ main \ resources \”。有什么好方法吗?或者有替代的解决方案?我正在使用Eclipse,但如果也可以在其他IDE中使用它,那就太好了。谢谢你的帮助。 问题答案: 解决此问题的
本文向大家介绍获取Java中目录或文件的绝对路径,包括了获取Java中目录或文件的绝对路径的使用技巧和注意事项,需要的朋友参考一下 方法java.io.File.getAbsolutePath()用于获取字符串形式的文件或目录的绝对路径名。此方法不需要任何参数。 演示此的程序如下所示- 示例 上面程序的输出如下- 输出结果 现在让我们了解上面的程序。 使用方法java.io.File.getAbs
本文向大家介绍获取Java中文件的绝对路径,包括了获取Java中文件的绝对路径的使用技巧和注意事项,需要的朋友参考一下 方法java.io.File.getAbsolutePath()用于获取字符串形式的文件的绝对路径。此方法不需要任何参数。 演示此的程序如下所示- 示例 上面程序的输出如下- 输出结果 现在让我们了解上面的程序。 使用方法java.io.File.getAbsolutePath(
本文向大家介绍java项目中的绝对路径和相对路径用法说明,包括了java项目中的绝对路径和相对路径用法说明的使用技巧和注意事项,需要的朋友参考一下 绝对路径:不可改变的路径 本地绝对路径:增加盘符的路径(e:/test/test.html) 网络绝对路径:增加协议,IP地址,端口号的路径(http://localhost:8080/test/test.html) 相对路径:可以改变的路径,但是以基