【发布时间】:2011-03-13 16:48:23
【问题描述】:
这个话题有很多混乱。已经提出了几个问题。事情似乎还不清楚。 类加载器、绝对文件路径等
假设我有一个项目目录结构,
我的项目 - --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 文件夹的绝对路径。
希望问题很清楚。
【问题讨论】:
-
此外,我觉得这种方法仍然仅限于“Unix”之类的目录结构平台,因为在 Windows 上附加“/lib/Dictionary/txtfile.txt”会因为正斜杠和反斜杠的不同而搞砸! :|
-
实际上,Java 并不关心斜线方向,尽管您只能显式指定非根驱动器,因为
/指向当前磁盘的根目录。 -
System.getProperty("file.separator") 将为 Windows 环境返回“\”,为 Unix(和类 Unix)环境返回“/”。
-
@Catchwa,是的,是文件分隔符,但是 Java 仍然会使用正斜杠识别路径,下次在 Windows 上需要路径时尝试使用它们。跨度>
-
解决方案有三种变体,视情况而定:stackoverflow.com/a/56327069/715269
标签: java deployment absolute-path