解决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
相关产品推荐
相关产品推荐

