我想在Java web应用程序中添加一个文本文件作为资源。我使用Netbeans作为IDE。
我想在文件夹中保存一个文件,这样我就可以直接引用该文件,而不是一个绝对路径。
FileInputStream fstream = new FileInputStream("resource.txt");
把那个文件放在文件夹的哪里?
依赖于相对文件路径是一个坏主意,因为它们依赖于当前工作目录(Java应用程序启动时当前打开的目录),并且您在Java应用程序内部没有控制当前工作目录。
你应该把它放在类路径中,然后从类路径中获取它:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("resource.txt");
// ...
上面的例子假设文件放在类路径root中。例如,如果它在包com.example.resources
中,那么您应该按照以下方式获得它:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/example/resources/resource.txt");
// ...
如果文件应该是可编辑的,那么你应该使用一个绝对的磁盘文件系统路径,并在你的web应用程序的安装指南中正确地记录它。另一种方法是使用数据库。
参见:
- getresourcestream () vs FileInputStream