private void checkIsUploadAndUpdateFile 1循环训练场allMapSycTrainMap中数据-加锁 synchronized allMapSycTrainMap for MapEntryLong MapSycTrain entry allMapSycTrainMapentrySet Long key = entrygetKey;
优化代码如下:
private void checkIsUploadAndUpdateFile() {
// 1. 循环训练场allMapSycTrainMap中数据-加锁
synchronized (allMapSycTrainMap) {
for (Map.Entry<Long, MapSycTrain> entry : allMapSycTrainMap.entrySet()) {
Long key = entry.getKey();
MapSycTrain value = entry.getValue();
File folder = new File("D:/mapSycTrain/"); // 本地文件夹路径
File[] files = folder.listFiles();
if (files != null) {
List<Long> ids = new ArrayList<>();
for (File file : files) {
String[] fileName1 = file.getName().split("-");
String[] fileName2 = fileName1[1].split("\\.");
Long trainingGroundIdByLocal = Long.valueOf(fileName1[0]);//文件训练场ID
ids.add(trainingGroundIdByLocal);
}
for (File file : files) {
String[] fileName1 = file.getName().split("-");
String[] fileName2 = fileName1[1].split("\\.");
Long trainingGroundIdByLocal = Long.valueOf(fileName1[0]);//文件训练场ID
Long timeByLocal = Long.valueOf(fileName2[0]);//文件时间版本
if (!ids.contains(key)) {
try (FileWriter fileWriter = new FileWriter(filePath)) {
// 将JSON对象写入文件
fileWriter.write(jsonObject.toJSONString());
fileWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
}
代码优化解释:
- 在原代码的基础上,将List
idsNot改为直接判断!ids.contains(key),避免多余的循环。 - 优化了变量的命名,使代码更加易读易懂。
- 删除了不必要的变量和判断。
- 修复了未初始化
jsonObject的问题,确保文件写入的是正确的 JSON 对象
原文地址: http://www.cveoy.top/t/topic/iNsa 著作权归作者所有。请勿转载和采集!