我的结构如下:
src -|com -|company -|Core --> JAVA class -|rules --> text files
Inside Core is a Java Class that uses:
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
但我不知道要使用什么相对路径。现在我使用:
"..\\..\\..\\..\\rules\\rule1.txt"
我也试过:
"../../../../rules/rule1.txt"
我哪里出错了?
最佳答案
这样不行。相对路径是相对于当前应用程序的工作目录,不是类的目录。如果您想知道您当前的工作目录是什么,请使用 System.getProperty("user.dir")
。
更好的方法是将规则目录添加到类路径,然后使用 Class#getResourceAsStream()
.
另一种方法是以其他方式设置规则目录的路径:如果可行,您可以提供命令行选项或设置一些系统属性(例如 java -Drules.path=/path/to/rules ...
然后通过 System.getProperty("rules.path")
读取)。
关于java - 我需要在我的 Java 项目中使用什么相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3904894/