public static String parse(String fileName) throws IOException {
StringBuilder builder = new StringBuilder();
String workDir = Paths.get("").toAbsolutePath().normalize().toString();
String pkgDir = "/src/test/resources/app/testcases/";
String absoluteFilePath = workDir.concat(pkgDir).concat(fileName);
Files.lines(Paths.get(absoluteFilePath.replace("\\", "/")), StandardCharsets.UTF_8)
.forEach(p -> builder.append(p).append(System.lineSeparator()));
return builder.toString();
}
这可行,但 fileName
可以位于 /src/test/resources/
任何地方的子目录下,我不喜欢硬编码 app/testcases/
一直。
最佳答案
弄清楚了:
public String parse(String fileName) throws IOException {
Path resourcesPath = Paths.get("src", "test", "resources");
StringBuilder builder = new StringBuilder();
Path filePath = Files.walk(resourcesPath)
.filter(p -> p.toFile().isFile()
&& p.getFileName().toString().equalsIgnoreCase(fileName))
.findFirst().orElseThrow();
Files.lines(filePath.toAbsolutePath(), StandardCharsets.UTF_8)
.forEach(p -> builder.append(p).append(System.lineSeparator()));
return builder.toString();
}
关于java - 从(子)目录中的文件读取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60826830/