📄 readnumber.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 + -