From f6a973087952a3114b829e537a727d42434e074e Mon Sep 17 00:00:00 2001 From: xuelijun <977662702@qq.com> Date: Tue, 10 Feb 2026 10:21:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B41?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tem/bocai/util/HttpClientExample.java | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tem/bocai/util/HttpClientExample.java b/src/main/java/com/tem/bocai/util/HttpClientExample.java index 36328fe..8a38c33 100644 --- a/src/main/java/com/tem/bocai/util/HttpClientExample.java +++ b/src/main/java/com/tem/bocai/util/HttpClientExample.java @@ -508,9 +508,52 @@ public class HttpClientExample { if (!directory.exists()) { directory.mkdirs(); // 创建多级目录 } - // 创建文件对象 File outputFile = new File(filePath); + // 如果文件已存在,读取现有数据并对比 + List> existingData = new ArrayList<>(); + Set existingIds = new HashSet<>(); + if (outputFile.exists()) { + try { + existingData = objectMapper.readValue(outputFile, + objectMapper.getTypeFactory().constructCollectionType(List.class, Map.class)); + for (Map item : existingData) { + if (item.containsKey("id")) { + existingIds.add(item.get("id").toString()); + } + } + log.info("已读取现有数据,共 " + existingData.size() + " 条记录"); + } catch (IOException e) { + log.warn("读取现有文件失败,将覆盖写入: " + e.getMessage()); + existingIds.clear(); + } + } + + // 筛选出新增的数据(id不在existingIds中的记录) + List> newData = new ArrayList<>(); + for (Map item : resultList) { + if (item.containsKey("id")) { + String id = item.get("id").toString(); + if (!existingIds.contains(id)) { + newData.add(item); + } + } + } + + // 合并现有数据和新数据 + List> finalData = new ArrayList<>(); + if (!existingData.isEmpty()) { + finalData.addAll(existingData); + } + finalData.addAll(newData); + + // 将合并后的数据写入 JSON 文件 + objectMapper.writeValue(outputFile, finalData); + log.info("数据已成功写入文件: " + outputFile.getAbsolutePath() + + " (现有: " + existingData.size() + " 条, 新增: " + newData.size() + " 条, 总计: " + finalData.size() + " 条)"); + + /* // 创建文件对象 + File outputFile = new File(filePath); // 如果文件已存在,删除旧文件(实现替换功能) if (outputFile.exists()) { @@ -523,7 +566,7 @@ public class HttpClientExample { // 将 List 写入 JSON 文件 objectMapper.writeValue(outputFile, resultList); - log.info("数据已成功写入文件: " + outputFile.getAbsolutePath()); + log.info("数据已成功写入文件: " + outputFile.getAbsolutePath());*/ } catch (IOException e) { e.printStackTrace(); log.error("写入 JSON 文件失败: " + e.getMessage(), e);