【发布时间】:2023-01-10 17:17:23
【问题描述】:
我正在开发 spring boot 应用程序,在我的配置文件中我有几个 o 文件,我想阅读它们。所以我尝试了下面的东西。
-Dspring.profiles.active=local -Dserver.port=8080 -Dajp.port=0 -Dspring.datasource.url=jdbc:oracle:thin:@localhost:1521:OraDoc -Dspring.datasource.username=system -Dspring.datasource.password=MyPasswd123 -Dspring.config.additional-location=file:/Users/bharatsuthar/HGW/codebaseDevelopmentRepo1/data-generation-tool/rdk-factory-data-config/ -Dlogging.config=file:/Users/bharatsuthar/HGW/codebaseDevelopmentRepo1/data-generation-tool/rdk-factory-data-config/logback-spring.xml
我能够读取所有文件,因为 spring 通过使用支持它-Dspring.config.additional-location但我不知道怎么读测试.pem文件在我的java代码中仅作为字符串。
下面是我的 test.pem 文件位置rdk-factory-data-config 目录
[测试 pem 文件的位置] (https://i.stack.imgur.com/4T0Y8.png)
我试过-Dspring.config.additional-location在这里我可以读取 application.yml 和 application-dev.yml 之类的文件,但是我如何读取测试.pem文件到我的java代码中的字符串。 我想将 pem 文件读入字符串,以便我可以在我的 spring boot 应用程序中读取数据。
pem 文件的内容:
-----BEGIN CERTIFICATE-----
MIIChjCCAg2gAwIBAgIQKgFtzZclg1CxcBAHZDc2cTAKBggqhkjOPQQDAzAzMQsw
CQYDVQQGEwJTSzEUMBIGA1UEChMLUkRLIEZhY3RvcnkxDjAMBgNVBAMTBVNLIFIx
MB4XDTIyMTAxMzA5MDAzMloXDTQ3MTAxMzIzNTk1OVowMzELMAkGA1UEBhMCU0sx
FDASBgNVBAoTC1JESyBGYWN0b3J5MQ4wDAYDVQQDEwVTSyBDMTB2MBAGByqGSM49
AgEGBSuBBAAiA2IABDSRscO50mm3uzavmLTS2DEw/J/1dRp5nmyWJNMp+B0/w5y7
AAvOLtcJDpulCFCXa/UhEfvbGEVvDtS9jY75YtOqvQkPIIuE6IUC6kyTXZaPOe+3
WwYbzYxpOXuMDOzZbaOB5TCB4jAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJJS
jPquJiIZ49geOU/NCAsvRaPOMB8GA1UdIwQYMBaAFPS8o9tW37TZ6W+OKy7hznHt
FR0dMBIGA1UdEwEB/wQIMAYBAf8CAQAwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov
L2NybC5yZGsudGVsZXNlasdfasdfsYy5kZS9ybC9TS19SMS5jcmwwQwYIKwYBBQUHAQEENzA1
MDMGCCsGAQUFBzAqwrrewrChidodHRwOi8vY3J0LnJkay50ZWxlc2VjLmRlL2NydC9TS19S
MS5jcnQwCgYIKoZIzj0EAwMDZwAwZAIwITubLwiMJ6KpTmyI41kOcCd3VzjbdPsx
NB3RZIBf4o3BYBzT1FQqbXvnYHsEGX/oAjAm8cTa9+tcLrrxN/RGwr53apg6FYlz
xRKbLjARTg/dFAn4W0w59XZXJ/fBZ4F6m5A=
-----END CERTIFICATE-----
我试过这个 -
String s = new String(Files.readAllBytes(Paths.get("test.pem"))); System.out.println("s=" + s);
-> 它没有给我这样的文件异常 -->
Caused by: java.nio.file.NoSuchFileException: test.pem
---> 我不想给出完整的绝对路径,因为我的要求是从我的 spring boot 文件夹的根目录中读取
太感谢了
【问题讨论】:
-
你试过
FileInputStream/FileReader了吗? -
我试过这个 -
String s = new String(Files.readAllBytes(Paths.get("test.pem"))); System.out.println("s=" + s);。 -> 它没有给我这样的文件异常 --> Caused by: java.nio.file.NoSuchFileException: test.pem---> 我不想给出完整的绝对路径,因为我的要求是从目录读取在我的 spring boot 文件夹的根目录 -
你试过了吗:FileSystemResource resource = new FileSystemResource("test.pem"); IOUtils.toString(resource.getInputStream(), StandardCharsets.UTF_8);另见baeldung.com/spring-properties-file-outside-jar
-
令我困扰的是,OP 能够像 Spring 一样使用 IOC 容器,深入了解其外部配置的工作原理(配置文件、附加位置等),但不知道读取文件的基本原理。怎么来的?
-
您是否尝试过使用文件的绝对路径?很可能相对路径
test.pem没有指向您认为它指向的地方。
标签: java spring spring-boot config