从资源中通过相对路径加载文件(Spring)

3

我有一个Spring项目。我的文件在这里:/src/main/java/resources/file.txt。

我如何获取它的完整路径?

如果我从测试中运行,它可以工作:

String path = System.getProperty("user.dir") + "/src/main/java/resources/file.txt";

但如果我使用Tomcat,则会显示Tomcat文件夹内的另一个路径,因此Spring无法找到此路径。

编辑:this.getClass().getClassLoader().getResource("file.txt") 是null

更新:对于愚蠢的问题我表示抱歉。它现在正常工作了,我设置了错误的文件名。

3个回答

4

文件 - file.txt在资源目录中,通常这将被构建过程(如Maven、Gradle等工具)复制到class-path中。这将使相对路径轻松加载文件。

此线程广泛讨论了如何从class-path中加载文件。 如何在Java中真正读取classpath中的文本文件


1
相对路径取决于当前上下文环境:应用程序、库等等。
您可以查阅文档,或者简单地添加一些内容。
File fn = new File("resources/database.db");
logger.info(fn.getAbsolutePath());

在那一刻查看当前路径的位置。
例如,在Spring @Configuration块中创建SQLite数据源。
@Configuration
.....
@Bean
....
        String dbName="database.sqlite";
        File fn = new File("src/main/resources/"+dbName);
        String name=fn.toURI().toString();
        dataSourceBuilder.url("jdbc:sqlite:"+name );
....

0
使用Spring,你可以使用类ClassPathResource。它可以从Java类路径中读取文件,而无需太多纯Java样板代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接