gpt4 book ai didi

java - 当项目部署在服务器上以及从测试类运行其类时,如何使文件可见?

转载 作者:行者123 更新时间:2023-12-02 08:59:33 26 4
gpt4 key购买 nike

如果我使用直接调用它的文件:

FileInputStream fileInputStream = new FileInputStream("SR02_pattern.xls");

(该文件位于\apv\main-app目录中),它不会被部署,当然,当项目在服务器上运行时也不会看到它。

如果我将文件放在/apv/main-web/WEB-INF/classes/目录中,它将被部署并且我可以通过

调用它
InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("SR02_pattern.xls")

当项目部署在服务器上时,但在类从测试运行的情况下,该行不会读取文件。

可能, getResourceAsStream("SR02_pattern.xls") 查找文件的位置是由某些系统属性设置的,我可以使用它们,但我不知道哪些属性可以提供帮助。

如何使用相同的代码读取这两种情况下的文件,而不将其作为参数传递到类中?

对于这两种情况,有很多答案,但我找不到适合这两种情况的答案。两种情况的默认路径不同。

当然,我可以将文件放在两个地方,如果文件不在第一个文件夹中,请在第二个文件夹中查找,就像我现在所做的那样,但是维护两个副本很容易出错,我希望使用更好的样式。

最佳答案

对于测试中以及生产代码中的所有部分,您都应该使用 this.getClass().getResourceAsStream('/SR02-pattern.xl')/ 定义资源的根目录。

您想要读取的文件应位于src/main/resources中。这将导致最终的 war 包位于 WEB-INF/classes 位置。

关于java - 当项目部署在服务器上以及从测试类运行其类时,如何使文件可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60263195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com