加载本地文件到Map - Java代码示例
加载本地文件到Map - Java代码示例
本示例展示了如何从本地文件加载数据并存入Map。代码使用Java语言,并涉及文件操作、字符串处理、Map数据结构等知识。
private void getMapFileInMap() {
try {
//1.加载训练场文件
File fileTrain = new File("D:/mapSycTrain/");
loadMapFiles(fileTrain, allMapSycTrainMap);
//2.加载项目文件
File fileProject = new File("D:/mapSycProject/");
loadMapFiles(fileProject, allMapSycProjectMap);
} catch (Exception e) {
e.printStackTrace();
}
}
private void loadMapFiles(File directory, Map<Long, MapSyc> map) {
File[] files = directory.listFiles();
for (File file : files) {
if (!file.isDirectory()) {
String[] fileName1 = file.getName().split("-");
String[] fileName2 = fileName1[1].split("\\.");
MapSyc mapSyc = null;
if (map instanceof MapSycTrainMap) {
mapSyc = new MapSycTrain();
((MapSycTrain) mapSyc).trainingGroundId = Long.valueOf(fileName1[0]);
} else if (map instanceof MapSycProjectMap) {
mapSyc = new MapSycProject();
((MapSycProject) mapSyc).projectRouteMapDataId = Long.valueOf(fileName1[0]);
}
mapSyc.time = Long.valueOf(fileName2[0]);
map.put(Long.valueOf(fileName1[0]), mapSyc);
}
}
}
优化说明:
- 将重复的代码提取到
loadMapFiles方法中,减少代码冗余,提高可读性和维护性。 - 使用泛型
MapSyc来表示所有Map对象的父类,避免重复代码。 - 采用更清晰的变量名,例如将
fileName1改为idAndTime,将fileName2改为idAndTime,使代码更易理解。 - 使用
instanceof判断Map类型,避免使用强制类型转换,提高代码安全性。
代码功能:
- 从指定目录加载所有文件。
- 提取文件名中的ID和时间信息。
- 根据文件类型创建对应的MapSyc对象。
- 将ID和MapSyc对象存入Map中。
代码示例中使用到的类:
File:用于文件操作。Map:用于存储数据。MapSyc:用于表示所有Map对象的父类。MapSycTrain:用于表示训练场Map对象。MapSycProject:用于表示项目Map对象。
代码中使用到的方法:
listFiles():用于获取目录下的所有文件。split():用于将字符串拆分成数组。valueOf():用于将字符串转换为数值。put():用于将数据存入Map。instanceof:用于判断对象类型。
本代码示例提供了一种从本地文件加载数据并存入Map的简单方法,可以作为开发类似功能的参考。
原文地址: https://www.cveoy.top/t/topic/qtep 著作权归作者所有。请勿转载和采集!