每当我在本地运行此代码时,文件的相对路径都工作正常,但预生产中的 Kubernetes pod 部署会抛出 NoSuchFileException。
MOCK_DATA_BASE_PATH = "/data/mocks"
private static String getMockDataString(String fileName) {
try {
String filePath = MOCK_DATA_BASE_PATH + fileName;
return Files.lines(Paths.get(filePath))
.collect(Collectors.joining(System.lineSeparator()));
} catch (IOException e) {
logger.error("Unable to read file {} with reason {}", fileName, e.getMessage());
}
return null;
}
当我检查本地返回的内容时,
Path projectRoot = Paths.get("").toAbsolutePath();
它返回了本地计算机特定的绝对路径,如下所示:/Users/username/path/to/project/mavenModule
,而 Kubernetes 部署清楚地显示/
。鉴于两者的差异,我想知道如何在两个平台上毫无例外地读取文件。
项目目录是这样的:项目有3个mvn module1/module2/module2目录。文件位于
path/to/Project/data/mocks/
您可以将 MOCK_DATA_BASE_PATH 作为环境中的变量
或者放入资源目录,文件名将在资源中搜索
或类路径之类的链接:somedir/file.txt