一、修改文件夹名称
1 效果展示
改之前:
文件夹都是用省份代码数字命名的
改之后
2 准备文件名称映射关系表
const folderNameMap = {
110000: "北京市",
120000: "天津市",
130000: "河北省",
140000: "山西省",
150000: "内蒙古自治区",
210000: "辽宁省",
220000: "吉林省",
230000: "黑龙江省",
310000: "上海市",
320000: "江苏省",
330000: "浙江省",
340000: "安徽省",
350000: "福建省",
360000: "江西省",
370000: "山东省",
410000: "河南省",
420000: "湖北省",
430000: "湖南省",
440000: "广东省",
450000: "广西壮族自治区",
460000: "海南省",
500000: "重庆市",
510000: "四川省",
520000: "贵州省",
530000: "云南省",
540000: "西藏自治区",
610000: "陕西省",
620000: "甘肃省",
630000: "青海省",
640000: "宁夏回族自治区",
650000: "新疆维吾尔自治区",
710000: "台湾省",
810000: "香港特别行政区",
820000: "澳门特别行政区",
};
3 修改文件名称
// 1 使用fs的promises API进行异步操作
const fs = require("fs").promises;
const path = require("path");
// 2 指定要遍历的根目录
const rootDir = path.join(__dirname, "/geoJson数据包/100000"); // 替换为你的文件夹路径
// 3 编写函数
async function renameFolders() {
try {
// 读取根目录下的所有文件和文件夹:{ withFileTypes: true }表示不只是返回包含名称的数组,还有文件的对象,对象上有很多信息
//isDirectory():布尔值,表示该条目是否是一个目录。
//isFile():布尔值,表示该条目是否是一个文件。
//name:字符串,表示目录条目的名称
const entries = await fs.readdir(rootDir, { withFileTypes: true });
// 遍历文件和文件夹
for (const entry of entries) {
//判断是否是文件夹 因为咱们需要的是修改文件夹名字
if (entry.isDirectory()) {
// 文件夹旧名称 (数字)
const oldFolderName = entry.name;
// 检查是否存在于映射关系中
const newName = folderNameMap[oldFolderName];
if (newName) {
// 构建新路径
const newFolderPath = path.join(rootDir, newName);
// 重命名文件夹
await fs.rename(path.join(rootDir, oldFolderName), newFolderPath);
console.log(`文件夹 "${oldFolderName}" 已重命名为 "${newName}"`);
}
}
}
} catch (err) {
console.error("在重命名文件夹时发生错误:", err);
}
}
// 4 最后调用函数
renameFolders();
二、 修改二级目录下的文件名
上一步已经修改了省份的文件夹名称,但是下边文件还是编码;这一步是把下边的市文件也改成中文
1 效果展示
2 获取映射关系
映射关系也是我用node根据json文件 获取到的
const mappings = {
110101: "东城区",
110102: "西城区",
110105: "朝阳区",
110106: "丰台区",
110107: "石景山区",
110108: "海淀区",
110109: "门头沟区",
110111: "房山区",
110112: "通州区",
110113: "顺义区",
110114: "昌平区",
110115: "大兴区",
110116: "怀柔区",
110117: "平谷区",
110118: "密云区",
110119: "延庆区",
120101: "和平区",
120102: "河东区",
120103: "河西区",
120104: "南开区",
120105: "河北区",
120106: "红桥区",
120110: "东丽区",
120111: "西青区",
120112: "津南区",
120113: "北辰区",
120114: "武清区",
120115: "宝坻区",
120116: "滨海新区",
120117: "宁河区",
120118: "静海区",
120119: "蓟州区",
130100: "石家庄市",
130200: "唐山市",
130300: "秦皇岛市",
130400: "邯郸市",
130500: "邢台市",
130600: "保定市",
130700: "张家口市",
130800: "承德市",
130900: "沧州市",
131000: "廊坊市",
131100: "衡水市",
140100: "太原市",
140200: "大同市",
140300: "阳泉市",
140400: "长治市",
140500: "晋城市",
140600: "朔州市",
140700: "晋中市",
140800: "运城市",
140900: "忻州市",
141000: "临汾市",
141100: "吕梁市",
150100: "呼和浩特市",
150200: "包头市",
150300: "乌海市",
150400: "赤峰市",
150500: "通辽市",
150600: "鄂尔多斯市",
150700: "呼伦贝尔市",
150800: "巴彦淖尔市",
150900: "乌兰察布市",
152200: "兴安盟",
152500: "锡林郭勒盟",
152900: "阿拉善盟",
210100: "沈阳市",
210200: "大连市",
210300: "鞍山市",
210400: "抚顺市",
210500: "本溪市",
210600: "丹东市",
210700: "锦州市",
210800: "营口市",
210900: "阜新市",
211000: "辽阳市",
211100: "盘锦市",
211200: "铁岭市",
211300: "朝阳市",
211400: "葫芦岛市",
220100: "长春市",
220200: "吉林市",
220300: "四平市",
220400: "辽源市",
220500: "通化市",
220600: "白山市",
220700: "松原市",
220800: "白城市",
222400: "延边朝鲜族自治州",
230100: "哈尔滨市",
230200: "齐齐哈尔市",
230300: "鸡西市",
230400: "鹤岗市",
230500: "双鸭山市",
230600: "大庆市",
230700: "伊春市",
230800: "佳木斯市",
230900: "七台河市",
231000: "牡丹江市",
231100: "黑河市",
231200: "绥化市",
232700: "大兴安岭地区",
310101: "黄浦区",
310104: "徐汇区",
310105: "长宁区",
310106: "静安区",
310107: "普陀区",
310109: "虹口区",
310110: "杨浦区",
310112: "闵行区",
310113: "宝山区",
310114: "嘉定区",
310115: "浦东新区",
310116: "金山区",
310117: "松江区",
310118: "青浦区",
310120: "奉贤区",
310151: "崇明区",
320100: "南京市",
320200: "无锡市",
320300: "徐州市",
320400: "常州市",
320500: "苏州市",
320600: "南通市",
320700: "连云港市",
320800: "淮安市",
320900: "盐城市",
321000: "扬州市",
321100: "镇江市",
321200: "泰州市",
321300: "宿迁市",
330100: "杭州市",
330200: "宁波市",
330300: "温州市",
330400: "嘉兴市",
330500: "湖州市",
330600: "绍兴市",
330700: "金华市",
330800: "衢州市",
330900: "舟山市",
331000: "台州市",
331100: "丽水市",
340100: "合肥市",
340200: "芜湖市",
340300: "蚌埠市",
340400: "淮南市",
340500: "马鞍山市",
340600: "淮北市",
340700: "铜陵市",
340800: "安庆市",
341000: "黄山市",
341100: "滁州市",
341200: "阜阳市",
341300: "宿州市",
341500: "六安市",
341600: "亳州市",
341700: "池州市",
341800: "宣城市",
350100: "福州市",
350200: "厦门市",
350300: "莆田市",
350400: "三明市",
350500: "泉州市",
350600: "漳州市",
350700: "南平市",
350800: "龙岩市",
350900: "宁德市",
360100: "南昌市",
360200: "景德镇市",
360300: "萍乡市",
360400: "九江市",
360500: "新余市",
360600: "鹰潭市",
360700: "赣州市",
360800: "吉安市",
360900: "宜春市",
361000: "抚州市",
361100: "上饶市",
370100: "济南市",
370200: "青岛市",
370300: "淄博市",
370400: "枣庄市",
370500: "东营市",
370600: "烟台市",
370700: "潍坊市",
370800: "济宁市",
370900: "泰安市",
371000: "威海市",
371100: "日照市",
371300: "临沂市",
371400: "德州市",
371500: "聊城市",
371600: "滨州市",
371700: "菏泽市",
410100: "郑州市",
410200: "开封市",
410300: "洛阳市",
410400: "平顶山市",
410500: "安阳市",
410600: "鹤壁市",
410700: "新乡市",
410800: "焦作市",
410900: "濮阳市",
411000: "许昌市",
411100: "漯河市",
411200: "三门峡市",
411300: "南阳市",
411400: "商丘市",
411500: "信阳市",
411600: "周口市",
411700: "驻马店市",
419001: "济源市",
420100: "武汉市",
420200: "黄石市",
420300: "十堰市",
420500: "宜昌市",
420600: "襄阳市",
420700: "鄂州市",
420800: "荆门市",
420900: "孝感市",
421000: "荆州市",
421100: "黄冈市",
421200: "咸宁市",
421300: "随州市",
422800: "恩施土家族苗族自治州",
429004: "仙桃市",
429005: "潜江市",
429006: "天门市",
429021: "神农架林区",
430100: "长沙市",
430200: "株洲市",
430300: "湘潭市",
430400: "衡阳市",
430500: "邵阳市",
430600: "岳阳市",
430700: "常德市",
430800: "张家界市",
430900: "益阳市",
431000: "郴州市",
431100: "永州市",
431200: "怀化市",
431300: "娄底市",
433100: "湘西土家族苗族自治州",
440100: "广州市",
440200: "韶关市",
440300: "深圳市",
440400: "珠海市",
440500: "汕头市",
440600: "佛山市",
440700: "江门市",
440800: "湛江市",
440900: "茂名市",
441200: "肇庆市",
441300: "惠州市",
441400: "梅州市",
441500: "汕尾市",
441600: "河源市",
441700: "阳江市",
441800: "清远市",
441900: "东莞市",
442000: "中山市",
445100: "潮州市",
445200: "揭阳市",
445300: "云浮市",
450100: "南宁市",
450200: "柳州市",
450300: "桂林市",
450400: "梧州市",
450500: "北海市",
450600: "防城港市",
450700: "钦州市",
450800: "贵港市",
450900: "玉林市",
451000: "百色市",
451100: "贺州市",
451200: "河池市",
451300: "来宾市",
451400: "崇左市",
460100: "海口市",
460200: "三亚市",
460300: "三沙市",
460400: "儋州市",
469001: "五指山市",
469002: "琼海市",
469005: "文昌市",
469006: "万宁市",
469007: "东方市",
469021: "定安县",
469022: "屯昌县",
469023: "澄迈县",
469024: "临高县",
469025: "白沙黎族自治县",
469026: "昌江黎族自治县",
469027: "乐东黎族自治县",
469028: "陵水黎族自治县",
469029: "保亭黎族苗族自治县",
469030: "琼中黎族苗族自治县",
500101: "万州区",
500102: "涪陵区",
500103: "渝中区",
500104: "大渡口区",
500105: "江北区",
500106: "沙坪坝区",
500107: "九龙坡区",
500108: "南岸区",
500109: "北碚区",
500110: "綦江区",
500111: "大足区",
500112: "渝北区",
500113: "巴南区",
500114: "黔江区",
500115: "长寿区",
500116: "江津区",
500117: "合川区",
500118: "永川区",
500119: "南川区",
500120: "璧山区",
500151: "铜梁区",
500152: "潼南区",
500153: "荣昌区",
500154: "开州区",
500155: "梁平区",
500156: "武隆区",
500229: "城口县",
500230: "丰都县",
500231: "垫江县",
500233: "忠县",
500235: "云阳县",
500236: "奉节县",
500237: "巫山县",
500238: "巫溪县",
500240: "石柱土家族自治县",
500241: "秀山土家族苗族自治县",
500242: "酉阳土家族苗族自治县",
500243: "彭水苗族土家族自治县",
510100: "成都市",
510104: "锦江区",
510105: "青羊区",
510106: "金牛区",
510107: "武侯区",
510108: "成华区",
510112: "龙泉驿区",
510113: "青白江区",
510114: "新都区",
510115: "温江区",
510116: "双流区",
510117: "郫都区",
510118: "新津区",
510121: "金堂县",
510129: "大邑县",
510131: "蒲江县",
510181: "都江堰市",
510182: "彭州市",
510183: "邛崃市",
510184: "崇州市",
510185: "简阳市",
510300: "自贡市",
510400: "攀枝花市",
510500: "泸州市",
510600: "德阳市",
510700: "绵阳市",
510800: "广元市",
510900: "遂宁市",
511000: "内江市",
511100: "乐山市",
511300: "南充市",
511400: "眉山市",
511500: "宜宾市",
511600: "广安市",
511700: "达州市",
511800: "雅安市",
511900: "巴中市",
512000: "资阳市",
513200: "阿坝藏族羌族自治州",
513300: "甘孜藏族自治州",
513400: "凉山彝族自治州",
520100: "贵阳市",
520200: "六盘水市",
520300: "遵义市",
520400: "安顺市",
520500: "毕节市",
520600: "铜仁市",
522300: "黔西南布依族苗族自治州",
522600: "黔东南苗族侗族自治州",
522700: "黔南布依族苗族自治州",
530100: "昆明市",
530300: "曲靖市",
530400: "玉溪市",
530500: "保山市",
530600: "昭通市",
530700: "丽江市",
530800: "普洱市",
530900: "临沧市",
532300: "楚雄彝族自治州",
532500: "红河哈尼族彝族自治州",
532600: "文山壮族苗族自治州",
532800: "西双版纳傣族自治州",
532900: "大理白族自治州",
533100: "德宏傣族景颇族自治州",
533300: "怒江傈僳族自治州",
533400: "迪庆藏族自治州",
540100: "拉萨市",
540200: "日喀则市",
540300: "昌都市",
540400: "林芝市",
540500: "山南市",
540600: "那曲市",
542500: "阿里地区",
610100: "西安市",
610200: "铜川市",
610300: "宝鸡市",
610400: "咸阳市",
610500: "渭南市",
610600: "延安市",
610700: "汉中市",
610800: "榆林市",
610900: "安康市",
611000: "商洛市",
620100: "兰州市",
620200: "嘉峪关市",
620300: "金昌市",
620400: "白银市",
620500: "天水市",
620600: "武威市",
620700: "张掖市",
620800: "平凉市",
620900: "酒泉市",
621000: "庆阳市",
621100: "定西市",
621200: "陇南市",
622900: "临夏回族自治州",
623000: "甘南藏族自治州",
630100: "西宁市",
630200: "海东市",
632200: "海北藏族自治州",
632300: "黄南藏族自治州",
632500: "海南藏族自治州",
632600: "果洛藏族自治州",
632700: "玉树藏族自治州",
632800: "海西蒙古族藏族自治州",
640100: "银川市",
640200: "石嘴山市",
640300: "吴忠市",
640400: "固原市",
640500: "中卫市",
650100: "乌鲁木齐市",
650200: "克拉玛依市",
650400: "吐鲁番市",
650500: "哈密市",
652300: "昌吉回族自治州",
652700: "博尔塔拉蒙古自治州",
652800: "巴音郭楞蒙古自治州",
652900: "阿克苏地区",
653000: "克孜勒苏柯尔克孜自治州",
653100: "喀什地区",
653200: "和田地区",
654000: "伊犁哈萨克自治州",
654200: "塔城地区",
654300: "阿勒泰地区",
659001: "石河子市",
659002: "阿拉尔市",
659003: "图木舒克市",
659004: "五家渠市",
659005: "北屯市",
659006: "铁门关市",
659007: "双河市",
659008: "可克达拉市",
659009: "昆玉市",
659010: "胡杨河市",
710000: "台湾省",
810001: "中西区",
810002: "湾仔区",
810003: "东区",
810004: "南区",
810005: "油尖旺区",
810006: "深水埗区",
810007: "九龙城区",
810008: "黄大仙区",
810009: "观塘区",
810010: "荃湾区",
810011: "屯门区",
810012: "元朗区",
810013: "北区",
810014: "大埔区",
810015: "西贡区",
810016: "沙田区",
810017: "葵青区",
810018: "离岛区",
820001: "花地玛堂区",
820002: "花王堂区",
820003: "望德堂区",
820004: "大堂区",
820005: "风顺堂区",
820006: "嘉模堂区",
820007: "路凼填海区",
820008: "圣方济各堂区",
};
3 修改文件名称
这里是把 340100.geoJson
格式改为安庆市.json
文件
const fs = require("fs").promises;
const path = require("path");
async function traverseDirectory(dirPath) {
try {
// 1 读取根目录里的子目录。这里读取到的是 省份文件夹数组
const files = await fs.readdir(dirPath, { withFileTypes: true });
// 2 遍历目录数组
for (const dirent of files) {
// 3 如果子目录是文件夹,继续读取
if (dirent.isDirectory()) {
//4 获取文件夹路径
const fullPath = path.join(dirPath, dirent.name);
// 5 读取一级文件夹下文件。这里读取到就是文件夹下的文件数组了
const subFiles = await fs.readdir(fullPath, { withFileTypes: false });
// 6 遍历文件 这里fileName已经是geoJson文件了
for (const fileName of subFiles) {
// 7 定义新文件名称 ,这里读取文件名不用.name 是因为上边 { withFileTypes: false },不携带其他信息
//fileName.split(".")[0] 读取文件前面的编码;parseInt强制类型转换 ;mappings[parseInt(fileName.split(".")[0])] 获取到映射关系对应的中文名
const newFileName = `${
mappings[parseInt(fileName.split(".")[0])]
}.json`;
if (newFileName) {
// 8 定义新文件路径
const newFolderPath = path.join(fullPath, newFileName);
// 9 重命名
fs.rename(path.join(fullPath, fileName), newFolderPath)
.then(() => {
console.log(`${fileName} 已成功重命名为 ${newFileName}`);
})
.catch((err) => {
console.error(`重命名文件时出错: ${err.message}`);
});
}
}
}
}
} catch (error) {
console.error(`遍历目录 ${dirPath} 时出错`, error);
}
}
// 调用函数,传入根目录路径
const rootDirPath = "./geoJson数据包/100000"; // 替换为你的根目录路径
traverseDirectory(rootDirPath);