我有一个包含 2 个包的项目:
tkorg.idrs.core.searchengines
tkorg.idrs.core.searchengines
在包 (2) 我有一个文本文件 ListStopWords.txt
,在包 (1) 我有一个类 FileLoadder
。这是 FileLoader
中的代码:
File file = new File("properties\\files\\ListStopWords.txt");
但我有这个错误:
该系统找不到指定的路径
你能给出解决方案吗?
原文由 tiendv 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果它已经在类路径中,那么只需从类路径而不是从磁盘文件系统中获取它。不要摆弄
java.io.File
中的相对路径。它们依赖于您完全无法从 Java 代码内部控制的当前工作目录。假设
ListStopWords.txt
与您的FileLoader
类在同一个包中,然后执行:或者,如果您最终所追求的实际上是
InputStream
:这肯定比创建
new File()
更可取,因为url
可能不一定代表磁盘文件系统路径,但它也可能代表虚拟文件系统路径(当 JAR 是扩展到内存而不是磁盘文件系统上的临时文件夹)甚至是网络路径,它们都不是每个定义都不能被File
构造函数消化。如果文件 - 如包名称提示 - 实际上是 一个完整的 属性文件(包含
key=value
行),只是“错误”扩展名,那么您可以立即将InputStream
提供给load()
方法。注意:当您尝试从
static
上下文中访问它时,请使用FileLoader.class
(或任何YourClass.class
getClass()
而不是在上面的例子中。