在我的Maven项目中,我在main方法中有以下代码:
FileInputStream in = new FileInputStream("database.properties");
但始终会找到找不到文件的错误。
我已将文件放在src / main / resources中,并将其正确复制到target / classes目录(我相信这是Maven资源的预期行为)但是在实际运行程序时似乎永远找不到文件。我尝试了其他各种途径:
FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");
等。但似乎没什么用。
那么正确的使用途径是什么?
根据下面的“disown's”答案,这是我需要的:
InputStream in = TestDB.class.getResourceAsStream("/database.properties")
其中TestDB
是该类的名称。
感谢您的帮助,谢绝!
答案 0 :(得分:56)
您无法直接加载文件,您需要使用资源抽象(资源不仅可以在文件系统中,而且可以在类路径的任何位置 - 在jar文件中或其他方式)。这种抽象是加载资源时需要使用的。资源路径是相对于类文件的位置的,因此您需要在斜杠前加上“root”:
InputStream in = getClass().getResourceAsStream("/database.properties");