如何从 GCP Cloud Function 中的 Maven 资源文件夹中读取文件?
How to read a file from maven resources folder in GCP Cloud Function?
我的项目使用具有默认文件夹结构的 Maven,当我的 Google Cloud Function 试图从资源目录读取 JSON 文件时( src/main/resources
),它失败了:
File Not Found Exception
下面是我的代码,它是从类路径资源文件夹中读取的标准代码。
有什么可能出错的提示吗?
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource("gcs-sf-dump.sql");
if (resource == null) {
throw new IllegalArgumentException("file is not found!");
} else {
File myFile = new File(resource.getFile());
String query = FileUtils.readFileToString(myFile);
}
我在我的 GCP Cloud Functions 中使用 FileReader
和 BufferedReader
:
try (FileReader fileReader = new FileReader("src/main/resources/myFile.sql");
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
String fileContent = bufferedReader.lines()
.collect(Collectors.joining(System.lineSeparator()));
}
使用来自 Apache Commons (org.apache.commons.io.IOUtils
) 的 IOUtils
:
String fileContent = IOUtils.toString(getClass().getClassLoader()
.getResourceAsStream("src/main/resources/myFile.sql"), StandardCharsets.UTF_8);
I tried some tests with getResourceAsStream
but no success!
参考:
对我来说这很有效:
java.io.File filePath = new java.io.File("src/main/resources/file.sql");
我的项目使用具有默认文件夹结构的 Maven,当我的 Google Cloud Function 试图从资源目录读取 JSON 文件时( src/main/resources
),它失败了:
File Not Found Exception
下面是我的代码,它是从类路径资源文件夹中读取的标准代码。
有什么可能出错的提示吗?
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource("gcs-sf-dump.sql");
if (resource == null) {
throw new IllegalArgumentException("file is not found!");
} else {
File myFile = new File(resource.getFile());
String query = FileUtils.readFileToString(myFile);
}
我在我的 GCP Cloud Functions 中使用 FileReader
和 BufferedReader
:
try (FileReader fileReader = new FileReader("src/main/resources/myFile.sql");
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
String fileContent = bufferedReader.lines()
.collect(Collectors.joining(System.lineSeparator()));
}
使用来自 Apache Commons (org.apache.commons.io.IOUtils
) 的 IOUtils
:
String fileContent = IOUtils.toString(getClass().getClassLoader()
.getResourceAsStream("src/main/resources/myFile.sql"), StandardCharsets.UTF_8);
I tried some tests with
getResourceAsStream
but no success!
参考:
对我来说这很有效:
java.io.File filePath = new java.io.File("src/main/resources/file.sql");