java - 从(子)目录中的文件读取文本

标签 java

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/

相关文章:

java - 无法通过Java项目连接到数据库,但可以使用客户端

java - 如果常量会阻止使用字符串参数,优化器是否会阻止创建字符串参数?

java - 具有耗时信息的 CompletableFuture

java - 客户端异常映射

java - Java中将对象添加到固定集合(数组)中的方法

java - PL/SQL 过程中的长 Activity session

java - jsf 应用程序中的 org.apache.jasper.JasperException

java - Maven 依赖管理在测试时被忽略(在运行时工作)

java - 从类路径上的类开始运行 Java 程序

java - 启用/禁用 JFreeChart 的绘制