⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readnumber.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 JAVA
字号:
package net.aetherial.gis.jiaotongbu.output.number;

import java.io.BufferedReader;
import java.util.Vector;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Hashtable;
import java.io.*;
import net.aetherial.gis.surface.CreateFile;
import net.aetherial.gis.jiaotongbu.output.publicuse.Item;

/**
 * <p>Title: </p>
 *
 * <p>Description: 读取编码</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ReadNumber {
  /**
   * 文件的目录路径,*带"\\"
   */
  private static  String filePath = "file\\bianma\\";
  /**
   * 文件的名称
   */
  private final static String name = "name.txt", number = "number.txt";
  /**
   * 读取出来的数组
   */
  private static String[] nameArray = null, numberArray = null;
  /**
   * 特定市、县、乡的下标
   */
  public static NameNumber anhui = new NameNumber();
//  private long startTime = 0;

  public static final int SHENG_FLAG = 1;
  public static final int SHI_FLAG = 2;
  public static final int XIAN_FLAG = 3;
  public static final int XIANGZHEN_FLAG = 4;
  public static final int CUN_FLAG = 5;

  public ReadNumber() {
    read();
//    startTime = System.currentTimeMillis();
  }

  public void setFilePath(String path) {
    this.filePath = path;
  }

  public void read() {
    if( nameArray == null || numberArray == null){
      this.nameArray = this.readFile(this.filePath + this.name);
      this.numberArray = this.readFile(this.filePath + this.number);
      this.scanPos();
    }
  }

  private void printTimeUsed() {
//    System.out.print("Time used:" +
//                     (System.currentTimeMillis() - this.startTime));
  }

  private void printShi() {
    for (int i = 0; i < this.numberArray.length; i++) {
      if (numberArray[i].indexOf("00000000") != -1) {
        if (i != 0) {
          System.out.print(nameArray[i] + "," + numberArray[i] + "\r\n");
        }

      }
    }
  }

  private boolean isSheng(String number) {
    return isSuitable(number, "0000000000");
  }

  private boolean isShi(String number) {
    return isSuitable(number, "00000000");
  }

  private boolean isXian(String number) {
    return isSuitable(number, "000000");
  }

  private boolean isXiangzhen(String number) {
    return isSuitable(number, "000");
  }

  /**
   * 只要一层一层满足条件,即可用此方法
   */
  private boolean isSuitable_Easy(String number, String ment) {
    if (number.indexOf(ment) != -1) {
      return true;
    }
    else {
      return false;
    }
  }

  /**
   * 完全符合条件
   */
  private boolean isSuitable(String number, String ment) {
    String temp = number.substring(number.length() - ment.length(),
                                   number.length());
    int i = temp.indexOf(ment);
    if (i != -1) {
//      if (! (number.substring(number.length() - ment.length() - 1,
//                              number.length() - ment.length()).endsWith("0"))) {
//        return true;
//      }
//      else {
//        return false;
//      }
        return true;
    }
    else {
      return false;
    }
  }

  /**
   * 扫描数组
   */
  private void scanPos() {
    NameNumber shi = new NameNumber(),xian = new NameNumber(),xiang = new NameNumber(),cun = null;
    for (int i = this.numberArray.length-1; i >= 0; i--) {
      if (this.isSheng(numberArray[i])) {
        this.anhui.setName(nameArray[i]);
        this.anhui.setNumber(numberArray[i]);
      }else if(this.isShi(numberArray[i])){
        shi.setName(nameArray[i]);
        shi.setNumber(numberArray[i]);
        this.anhui.addChild(shi);
        shi = new NameNumber();

      }else if(this.isXian(numberArray[i])){
        xian.setName(nameArray[i]);
        xian.setNumber(numberArray[i]);
        shi.addChild(xian);
        xian = new NameNumber();
      }else if(this.isXiangzhen(numberArray[i])){
        xiang.setName(nameArray[i]);
        xiang.setNumber(numberArray[i]);
        xian.addChild(xiang);
        xiang = new NameNumber();
      }else{
        cun = new NameNumber(nameArray[i],numberArray[i]);
        xiang.addChild(cun);
      }
    }
  }

  private String getMultiplySymbol(int num) {
    String temp = "";
    for (int i = 0; i < num; i++) {
      temp = temp + "-";
    }
    return temp;
  }

  /**
   *
   */
  private String printAnhui(NameNumber nn, int layout) {
    String n = "";
    if (nn != null) {
      n =  ("|" + getMultiplySymbol(layout) + nn.getNumber() + "," +
                         nn.getName()+"\r\n");

      NameNumber[] child = nn.getChildren();
      if (child != null) {
        for (int i = 0; i < child.length; i++) {
          layout++;
          n = n + printAnhui(child[i], layout);
        }
      }
    }
    return n;
  }

  /**
   * 得到某市的数组
   */
  private String[] getShi(String shiName) {
    String[] temp = null;

    return temp;
  }

  /**
   * 根据下标得到新数组
   */
  private String[] getNewArray(String[] array, int startPos, int endPos) {
    String[] temp = new String[endPos - startPos];
    for (int i = 0; i < temp.length; i++) {
      temp[i] = array[startPos + i];
    }
    return temp;
  }

  private String[] readFile(String fileName) {
    Vector ve = new Vector();
    try {
      BufferedReader in = new BufferedReader(new InputStreamReader(new
          FileInputStream(fileName)));
      String line = new String("");
      int i = 0;
      for (line = in.readLine(); line != null; line = in.readLine(), i++) {
        //System.out.println("读取第"+ i + "行: " + line);
        ve.add(line.trim());
      }
    }
    catch (Exception ex) {
      System.out.print(ex);
    }
    String[] temp = new String[ve.size()];
    for (int i = 0; i < ve.size(); i++) {
      temp[i] = ve.elementAt(i) + "";
    }
    return temp;
  }
  public NameNumber findByName(String name,int flag){
    NameNumber it = null;
    if (flag == this.SHI_FLAG) {
      String shortName = name.length() < 2 ? name : name.replaceAll("市","");
      NameNumber[] nn = this.anhui.getChildren();
      for (int i = 0; i < nn.length; i++) {
        if ((nn[i].getName().indexOf(shortName))  == 0) {
          it = nn[i];
        }
      }
    }else if(flag == this.XIAN_FLAG){
      String shortName = name.length() < 2 ? name : name.replaceAll("县","");

      NameNumber[] nn = this.anhui.getChildren();
      NameNumber[] nn1 = null;
      for (int i = 0; i < nn.length; i++) {
        nn1 = nn[i].getChildren();
        if (nn1 != null) {
          for (int j = 0; j < nn1.length; j++) {
            if ( name != null && (nn1[j].getName().indexOf(shortName)) == 0) {
              it = nn1[j];
              break;
            }
          }
        }
      }
    }else if(flag == this.XIANGZHEN_FLAG){
      String shortName = name.length() < 2 ? name : name.replaceAll("镇","").replaceAll("乡","");
      NameNumber[] nn = this.anhui.getChildren();
      NameNumber[] nn1 = null;
      NameNumber[] nn2 = null;
      for (int i = 0; i < nn.length; i++) {
        nn1 = nn[i].getChildren();
        if (nn1 != null) {
          for (int j = 0; j < nn1.length; j++) {
            nn2 = nn1[j].getChildren();
            for(int k =0; nn2 != null && k < nn2.length; k++){
              if (name != null && (nn2[k].getName().indexOf(name))  == 0) {
                it = nn1[j];
                break;
              }
            }
          }
        }
      }
    }

    return it;
  }

  /**
   * 从县级寻找乡镇
   */
  public static NameNumber findXiangzhenByName(String name,NameNumber xian){
    if(xian == null){
      Item.scanToGetXian(name);
    }
    long xiangNum = 0;
    long zhenNum = 0;
    long bshNum = 0;
    long shjwNum = 0;
    long qtNum = 0;

    long temp = 0;
    boolean isZhen = name.indexOf("镇") > -1;
    boolean isBanShiChu = name.indexOf("办事处") > -1;
    boolean isJieDao = name.indexOf("街道") > -1;
    boolean isXiang = name.indexOf("乡") > -1;
    String shortName = name;
    if(shortName.length() > 2){
      shortName = shortName.
          replaceAll("镇","").
          replaceAll("乡","").
          replaceAll("办事处","").
          replaceAll("街道","");
    }

    NameNumber[]  children = Item.xian.getChildren();
    String xianNumber = "000000000000";
    try {
      xianNumber = Item.xian.getNumber().substring(0,
          Item.xian.getNumber().length() - 6) + "000";
    }
    catch (Exception ex) {
    }
    xiangNum = Long.parseLong(xianNumber);
         zhenNum = Long.parseLong(xianNumber);
         bshNum = Long.parseLong(xianNumber);
         shjwNum = Long.parseLong(xianNumber);
     qtNum = Long.parseLong(xianNumber);
    if (children != null)  {
      for (int i = 0; i < children.length; i++) {
        if (children[i].getName().indexOf("镇") > -1) {
          zhenNum = Math.max(zhenNum,
                             Long.parseLong(children[i].getNumber().
                                            substring(0,
              children[i].getNumber().length() - 3)));
        }
        else if (children[i].getName().indexOf("办事处") > -1) {
          bshNum = Math.max(bshNum,
                            Long.parseLong(children[i].getNumber().
                                           substring(0,
              children[i].getNumber().length() - 3)));
        }
        else if (children[i].getName().indexOf("街道") > -1) {
          shjwNum = Math.max(shjwNum,
                             Long.parseLong(children[i].getNumber().
                                            substring(0,
              children[i].getNumber().length() - 3)));
        }
        else if (children[i].getName().indexOf("乡") > -1) {
          xiangNum = Math.max(xiangNum,
                              Long.parseLong(children[i].getNumber().
                                             substring(0,
              children[i].getNumber().length() - 3)));
        }else{
          String qtStr = children[i].getNumber().
                                             substring(0,
              children[i].getNumber().length() - 3);
          qtNum = Math.max(qtNum,
                              Long.parseLong(qtStr));

        }
      }
        for (int i = 0; i < children.length; i++) {
        String childShortName = children[i].getName().
          replaceAll("镇","").
          replaceAll("乡","").
          replaceAll("办事处","").
          replaceAll("街道","");

        if (childShortName.equals(shortName)) {
          return children[i];
        }
      }
      for (int i = 0; i < children.length; i++) {
        if (children[i].getName().indexOf(shortName) == 0) {
          return children[i];
        }
      }

    }
    long number = 0;
    if(isZhen) number = zhenNum;
    else
    if(isBanShiChu) number = bshNum;
    else
    if(isJieDao) number = shjwNum;
    else
    if(isXiang) number = xiangNum;
    else
      number = qtNum;
    number ++;
    NameNumber newNum = new NameNumber(name,""+ number+"000");
    Item.xian.addChild(newNum);
    return newNum;
  }
  /**
  * 从乡镇寻找建制村
  */
 public static NameNumber findJianzhicunByName(String name,NameNumber xiangzhen){
   NameNumber[]  children = xiangzhen.getChildren();
   if (children == null) {
     return null;
   }
   else {
     for (int i = 0; i < children.length; i++) {
       if (children[i].getName().indexOf(name) != -1) {
         return children[i];
       }
     }
     return null;
   }
  }
  public void danWeiDaiMa() throws Exception{
   BufferedWriter bo = new BufferedWriter(new FileWriter(new File("单位代码.txt")));

   for(int i = 0; i < this.numberArray.length; i++){
     String content = null;
     String name = this.nameArray[i];
       String shen = this.numberArray[i].substring(0,2);
       String shi = this.numberArray[i].substring(2,4);
       String xian = this.numberArray[i].substring(4,6);

     if(this.numberArray[i].indexOf("0000000000") > -1){
       bo.write(shen+"1000000\t"+nameArray[i]+"交通厅");bo.newLine();
       bo.write(shen+"2000000\t"+nameArray[i]+"公路局");bo.newLine();
     }else if(this.numberArray[i].indexOf("00000000") > -1){
//       bo.write(nameArray[i]+"交通厅\t"+shen+"1000000");bo.newLine();
       bo.write(shen+"1"+shi+"1000\t"+nameArray[i]+"交通局");bo.newLine();
     }else if(this.numberArray[i].indexOf("000000") > -1){
       bo.write(shen+"1"+shi+"1"+xian+"1\t"+nameArray[i]+"交通局");bo.newLine();
     }
   }
   bo.flush();
   bo.close();
  }

  public void shiXianLieBiao() throws Exception{
   BufferedWriter bo = new BufferedWriter(new FileWriter(new File("市县列表.txt")));
   String shiMing = "";
     String xianMing = "";
   for(int i = 0; i < this.numberArray.length; i++){
     String content = null;
     String name = this.nameArray[i];

       String shen = this.numberArray[i].substring(0,2);
       String shi = this.numberArray[i].substring(2,4);
       String xian = this.numberArray[i].substring(4,6);

     if(this.numberArray[i].indexOf("0000000000") > -1){
//       bo.write(shen+"1000000\t"+nameArray[i]+"交通厅");bo.newLine();
//       bo.write(shen+"2000000\t"+nameArray[i]+"公路局");bo.newLine();
     }else if(this.numberArray[i].indexOf("00000000") > -1){
//       bo.write(nameArray[i]+"交通厅\t"+shen+"1000000");bo.newLine();
//       bo.write(shen+"1"+shi+"1000\t"+nameArray[i]+"交通局");bo.newLine();
       shiMing = this.nameArray[i];
     }else if(this.numberArray[i].indexOf("000000") > -1){
       xianMing = this.nameArray[i];

       bo.write(shiMing + "\t" + xianMing);bo.newLine();
     }
   }
   bo.flush();
   bo.close();
  }

  private void resultToFile(){
    CreateFile cf = new CreateFile(new File("D:\\NameNumber.txt"));
    cf.setEncode("utf-8");
    cf.memoryToFile(this.anhui.toString("__"));
  }
  public static void main(String args[]) {
    ReadNumber rn = new ReadNumber();
    rn.read();
    try {
      rn.danWeiDaiMa();
      rn.shiXianLieBiao();
    }
    catch (Exception ex) {
    }
//    rn.resultToFile();
//    System.out.println(rn.printAnhui(rn.anhui, 0));
//    rn.printTimeUsed();
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -