我正在尝试从spring-boot中的资源中读取demo.html文件。我试过这个代码,但它在本地工作,只是在服务器上不工作:
val demoFile = new File(this.getClass.getClassLoader.getResource("foo/demo.html").getFile)
val demoFile = new File(ClassLoader.getSystemClassLoader.getResource("foo/demo.html").getFile)
val demoFile = new File(Thread.currentThread().getContextClassLoader.getResource("foo/demo.html").getFile)
在服务器上,我得到FileNotFoundException
谢谢。
它在本地工作,因为文件demo.html
存在于本地计算机上。您可以在build
文件夹或IDE用来编译代码的任何文件夹中找到它。
在服务器上运行项目时,只有项目jar
文件,例如project.jar
。服务器上没有demo.html
文件。
demo.html
位于project.jar
文件中。project.jar
是一个简单的ZIP存档。因此,您需要一种从ZIP档案(您的project.jar
(中获取文件的方法。
最简单的方法是使用流。例如,您可以读取字符串中的文件。
如果需要解析文件(可以是JSON、XML或HTML(,可以将流直接传递到解析库。
另外,不要忘记关闭流(当然,如果库没有关闭流(。
https://www.baeldung.com/spring-classpath-file-access
此外,您还可以将一个文件从jar复制到TEMP
文件夹,并将其作为普通文件进行访问。