You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决InvalidPathException并实现JSON文件逐个读取为字符串

问题解决:逐个读取JSON文件转String并传入目标方法

方案可行吗?

完全可行。逐个处理每个JSON文件不仅能解决你当前遇到的路径异常,还能灵活支持单独或同时读取文件的需求。

怎么实现?

  • 先明确要处理的JSON文件名(单独或多个都行),从指定目录里逐个处理
  • 对每个文件,单独拼接正确路径,读取内容转成String
  • 把这些String收集起来,传给目标方法即可

代码示例

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class JsonFileProcessor {

    public static void main(String[] args) {
        // 你的JSON文件目录
        String jsonDir = "C:\\Users\\pc\\IdeaProjects\\jsonapi\\src\\test\\java\\resources\\json";
        // 要处理的JSON文件列表:单独处理就只放一个文件名,同时处理就放多个
        List<String> targetFiles = List.of("file1.json", "file2.json");
        List<String> jsonContents = new ArrayList<>();

        try {
            for (String fileName : targetFiles) {
                // 正确拼接单个文件路径:目录 + 文件名,避免直接传完整路径引发异常
                Path filePath = Paths.get(jsonDir, fileName);
                // 读取文件内容转成String
                String jsonStr = Files.readString(filePath);
                jsonContents.add(jsonStr);
            }

            // 准备productIds参数,根据实际需求填写
            List<String> productIds = List.of("prod001", "prod002");
            // 调用目标方法
            List<String> exports = YourTargetClass.getAllExportsWithProductIds(jsonDir, productIds);

            // 这里可以处理返回结果
            System.out.println("处理结果:" + exports);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键注意点

  • 别再把两个完整路径直接传给Paths.get(),用Paths.get(目录, 文件名)的方式拼接,能避开Windows路径里的冒号等特殊字符导致的InvalidPathException
  • 单独处理某个文件时,只需要把targetFiles改成只包含该文件名的列表就行,灵活性很高
  • Files.readString()是Java 11及以上版本的API,要是用的是更低版本,就用new String(Files.readAllBytes(filePath))来转String

内容的提问来源于stack exchange,提问作者invzbl3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:35:22