我需要在 Java 项目中使用什么相对路径

Rob*_*itt 4 java path relative-path

我有这样的结构:

源代码
  -|com
       -|公司
               -|核心--> JAVA类
  -|规则 --> 文本文件

Core 内部是一个 Java 类,它使用:

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚要使用什么相对路径。现在我用:

“..\\..\\..\\..\\rules\\rule1.txt”

我也尝试过:

“../../../../rules/rule1.txt”

我哪里做错了?

mus*_*iKk 5

事实并非如此。相对路径是相对于当前应用程序的工作目录,而不是类的目录。如果您想了解当前的工作目录是什么,请使用System.getProperty("user.dir").

更好的方法是将规则目录添加到类路径中,然后使用Class#getResourceAsStream().


另一种方法是以其他方式设置规则目录的路径:如果可行,您可以提供命令行选项或设置某些系统属性(例如java -Drules.path=/path/to/rules ...,稍后通过 读取System.getProperty("rules.path"))。