【问题标题】:FileInputStream in Spring MVC fails to find fileSpring MVC 中的 FileInputStream 找不到文件
【发布时间】:2015-08-24 12:01:06
【问题描述】:

我正在开发一个 SpringMVC 项目,该项目在数据库上运行许多自动化测试。此数据库的访问详细信息位于 .properties 文件中。该文件位于项目目录中。

 FileInputStream fis = new FileInputStream("batch-dm.properties");
    propFile = new Properties();
    propFile.load(fis);

由于文件存储在项目目录中,FileInputStream 应该能够访问它,不是吗? 如果我提供绝对路径,例如

FileInputStream fis = new FileInputStream("C:/workspace/Project/batch-dm.properties");

它可以识别文件并正常运行。 由于它是 Spring MVC 项目,我是否需要将此文件放在不同的位置? 谢谢

【问题讨论】:

  • 文件是war文件的一部分吗?

标签: java spring spring-mvc


【解决方案1】:

只是为了让你清醒一下,试着看看输出System.getProperty("user.dir")的值是什么(我们称之为A),这将打印你的应用程序初始化的完整绝对路径,更具体地说,它将打印启动 JVM 的目录。

如果您没有为您尝试打开的文件提供父路径,则默认采用 (A) 路径并在该目录中查看文件。所以,请记住这一点。


附加信息

如果您绝对需要该文件,则应将其包含在您的项目中,以便您可以将其作为资源进行访问。 Resource 是包含在您的项目中的文件,并与生成的 .jar 或 .war 捆绑在一起用于重新分发。

我的建议是将文件放入包中并用作资源,因为它是使用项目附带的外部资源的更安全方式。

深入了解this 的帖子,了解有关处理资源的实用方法的更多信息。

【讨论】:

  • 谢谢,我通过将文件添加到资源目录并使用this.class.getClassLoader().getResourceAsStream("/file.properties"); 将其作为 InputStream 而不是 FileInputStream 来解决问题。
  • 很高兴帮助老兄! :D
【解决方案2】:

请参考以下链接:
https://stackoverflow.com/a/2308388/1358551

您可能必须使用 getResourceAsStream()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    相关资源
    最近更新 更多