免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1433 | 回复: 0

Java处理中华人民共和国行政区划代码 [复制链接]

论坛徽章:
0
发表于 2015-07-10 13:07 |显示全部楼层
[Java]代码
  1. 从中华人民共和国国家统计局http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html 获取最新县及县以上行政区划代码(截止2014年10月31日),copy 下来,转换成以下格式
  2. 110000北京市
  3. 110100市辖区
  4. 110101东城区
  5. 110102西城区
  6. 110105朝阳区
  7. 110106丰台区
  8. 110107石景山区
  9. 110108海淀区
  10. 110109门头沟区
  11. 110111房山区
  12. 110112通州区
  13. 110113顺义区
  14. 110114昌平区
  15. 110115大兴区
  16. 110116怀柔区
  17. 110117平谷区
  18. 110200县
  19. 110228密云县
  20. 110229延庆县
  21. 120000天津市
  22. 120100市辖区
  23. 120101和平区
  24. 120102河东区
  25. 120103河西区
  26. 120104南开区
  27. ......
  28. 的文件

  29. 定义Area类进行接收
  30. public class Area {
  31. private String code ;
  32. //行政编码
  33. private String name;
  34. //名称
  35. private int level;
  36. //行政级别 0:省/直辖市 1:地级市 2:县级市
  37. private String parentCode;
  38. //上一级的行政区划代码
  39.   
  40. public Area() {
  41.   super();
  42. }

  43. public Area(String code, String name, int level, String parentCode) {
  44.   super();
  45.   this.code = code;
  46.   this.name = name;
  47.   this.level = level;
  48.   this.parentCode = parentCode;
  49. }

  50. public String getCode() {
  51.   return code;
  52. }

  53. public void setCode(String code) {
  54.   this.code = code;
  55. }

  56. public String getName() {
  57.   return name;
  58. }

  59. public void setName(String name) {
  60.   this.name = name;
  61. }

  62. public int getLevel() {
  63.   return level;
  64. }

  65. public void setLevel(int level) {
  66.   this.level = level;
  67. }

  68. public String getParentCode() {
  69.   return parentCode;
  70. }

  71. public void setParentCode(String parentCode) {
  72.   this.parentCode = parentCode;
  73. }
  74.   
  75. public String outPutString(){
  76.   return this.getCode()+" "+this.getName()+" "+this.getLevel()+" " +this.getParentCode();
  77. }
  78. }

  79. 通过文件流进行数据读写操作,转换成对象

  80. import java.io.BufferedReader;
  81. import java.io.File;
  82. import java.io.FileNotFoundException;
  83. import java.io.FileReader;
  84. import java.io.IOException;
  85. import java.util.ArrayList;
  86. import java.util.List;

  87. public class AreaDemo {
  88.   
  89. public List<Area> BufferedReaderDemo(String path){
  90.   String line = null;
  91.   BufferedReader reader = null;
  92.   File file = new File(path);

  93.   String cityCode="";
  94.   String countyCode="";
  95.   List<Area> result = new ArrayList<Area>();
  96.   if(!file.exists()||file.isDirectory()){
  97.    return null;
  98.   }
  99.   try {
  100.    FileReader in = new FileReader(file);
  101.    reader = new BufferedReader(in);
  102.    
  103. //读取文件的每一行
  104.    while((line = reader.readLine())!=null){
  105.     String[] data = this.doString(line);
  106.      
  107. //处理读取的文件记录
  108.     if(this.isSheng(data[0])){
  109.      cityCode = data[0];
  110.      Area area = new Area(data[0], data[1], 0, "0");
  111.      result.add(area);
  112.     }else if(this.isShi(data[0])){
  113.      countyCode =data[0];
  114.      Area area = new Area(data[0], data[1], 1, cityCode);
  115.      result.add(area);
  116.     }else{
  117.      Area area = new Area(data[0], data[1], 2, countyCode);
  118.      result.add(area);
  119.     }
  120.      
  121.    }
  122.    
  123.   } catch (FileNotFoundException e) {
  124.    e.printStackTrace();
  125.   } catch (IOException e) {
  126.    e.printStackTrace();
  127.   }finally{
  128.    try {
  129.     reader.close();
  130.    } catch (IOException e) {
  131.     e.printStackTrace();
  132.    }
  133.   }
  134.    
  135.   return result;
  136.    
  137. }
  138.   
  139. //字符分割
  140. public String[] doString(String line){
  141.   String code="";
  142.   String name="";
  143.   code = line.substring(0, 6);
  144.   name = line.substring(6, line.length());
  145.   String[] result = new String []{code,name};
  146.   return result;
  147. }
  148.   
  149. //判断是否省或者直辖市
  150. public boolean isSheng(String code){
  151.   String last = code.substring(2);
  152.   if("0000".equalsIgnoreCase(last)){
  153.    return true;
  154.   }
  155.   return false;
  156.    
  157. }
  158. //判断是否地级市
  159. public boolean isShi(String code){
  160.   String last = code.substring(4);
  161.   if("00".equalsIgnoreCase(last)){
  162.    return true;
  163.   }
  164.   return false;
  165. }
  166.   
  167.   
  168. }

  169. 拿到list列表之后,不管是保存文件还是写入数据库,都比较方便了。
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP