📄 newsixtable.java
字号:
package net.aetherial.gis.baobu.TotalExcel;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.work.MergeFiles;
import net.aetherial.gis.output.FileOperate;
import net.aetherial.gis.surface.ItemValue;
public class NewSixTable {
/**
* @param args
*/
private String oldFilePath = "E:\\temp\\first"; //上一次报部数据路径
private String newFilePath = "E:\\temp\\current"; //本次数据路径
//private String oldFilePath = "d:\\test"; //上一次报部数据路径
//private String newFilePath = "d:\\testbak"; //本次数据路径
/*
* 构造函数
*/
public NewSixTable(){
super();
}
//比较11个文件,去除上次报部与本次相同的记录
public void createTxtFile(String fileName){
String filePath = "E:\\比较数据"; //接口文件路径
//String filePath = "E:\\temp";
File allFile = new File(filePath);
File[] files = allFile.listFiles();// 获取城市目录列表
for (int k = 0; files != null && k < files.length ; k++){
filePath = files[k].getPath();
String tempPath = filePath.replace('\\', ',');
String[] paths = tempPath.split(",");
int lenInt = paths.length - 1;
String shiName = paths[lenInt]; // 城市名
this.oldFilePath = filePath + "\\first\\"; //上次报部接口文件路径
this.newFilePath = filePath + "\\current\\"; //本次报部接口文件路径
CommClass cc = new CommClass();
List oldList = cc.getAllTxt(this.oldFilePath + fileName + ".txt"); //打开上次报部接口文件
List newList = cc.getAllTxt(this.newFilePath + fileName + ".txt"); //打开本次报部接口文件
String oldLineStr = "";
String newLineStr = "";
String [] oldchildStr = null;
String [] newChildStr = null;
String txtStr = "";
int n = 0;
for (int i=0; newList != null && i<newList.size(); i++){
newLineStr = (String)newList.get(i);
newChildStr = newLineStr.split("\t");
n = 0;
for (int j=0; oldList != null && j<oldList.size(); j++){
oldLineStr = (String)oldList.get(j);
oldchildStr = oldLineStr.split("\t");
//桥梁
if ( fileName.equals("Ql") ){
if (oldchildStr[0].trim().equals(newChildStr[0].trim()) && oldchildStr[2].trim().equals(newChildStr[2].trim()))
break;
if (((oldchildStr[0].trim().equals(newChildStr[0].trim()) && !oldchildStr[2].trim().equals(newChildStr[2].trim()))
|| (!oldchildStr[0].trim().equals(newChildStr[0].trim()) && oldchildStr[2].trim().equals(newChildStr[2].trim())))
&& oldchildStr[1].trim().substring(0,10).equals(newChildStr[1].trim().substring(0,10)) ){
n ++ ;
break;
}
}
//渡口
if ( fileName.equals("Dk") ){
if (oldchildStr[0].trim().equals(newChildStr[0].trim()) && oldchildStr[1].trim().equals(newChildStr[1].trim()))
break;
if (((oldchildStr[0].trim().equals(newChildStr[0].trim()) && !oldchildStr[1].trim().equals(newChildStr[1].trim()))
|| (!oldchildStr[0].trim().equals(newChildStr[0].trim()) && oldchildStr[1].trim().equals(newChildStr[1].trim())))
&& oldchildStr[3].trim().substring(0,10).equals(newChildStr[3].trim().substring(0,10)) ){
n ++ ;
break;
}
}
//路线
if ( fileName.equals("Lx") ){
if ( oldchildStr[0].trim().equals(newChildStr[0].trim())) {
n++;
break;
}
}
//路段
if ( fileName.equals("Ld") ){
if ( oldchildStr[1].trim().equals(newChildStr[1].trim()) ){
n++;
break;
}
}
//乡镇、建制村
if ( fileName.equals("Jzcjbqk") || fileName.equals("Xzjbqk") ){
if (oldchildStr[1].trim().equals(newChildStr[1].trim()) && oldchildStr[0].trim().equals(newChildStr[0].trim()))
break;
if ((!oldchildStr[1].trim().equals(newChildStr[1].trim()) && oldchildStr[0].trim().equals(newChildStr[0].trim()))
|| (oldchildStr[1].trim().equals(newChildStr[1].trim()) && !oldchildStr[0].trim().equals(newChildStr[0].trim()))
&& oldchildStr[0].trim().equals(newChildStr[0].trim())){
n++ ;
break;
}
}
//乡镇、建制村通达情况
if ( fileName.equals("Jzctdqk") || fileName.equals("Xztdqk") ){
if (oldchildStr[1].trim().equals(newChildStr[1].trim()) && oldchildStr[0].trim().equals(newChildStr[0].trim()))
break;
if (!(oldchildStr[0].trim().equals(newChildStr[0].trim()) &&
oldchildStr[1].trim().equals(newChildStr[1].trim())) ){
n++;
break;
}
}
//未标注的建制村、未找到的建制村只需一种判断
if ( fileName.equals("未标注的建制村") || fileName.equals("未找到的建制村") ){
if (oldLineStr.equals(newLineStr)){
n ++;
break;
}
}
}
//本次报部接口与上次报部接口不相等时,进行汇总
if (n != 0) {
txtStr += newLineStr + "\r\n";
System.out.println(newLineStr);
}
}
FileOperate fileOperate = new FileOperate();
fileOperate.newFile("e:\\比较后文件\\"+shiName + "\\"+ fileName + ".txt",txtStr);//输出文件
System.err.println("****************** "+ shiName + " 比较完成! ***********************");
}
}
// 比较11个文件,去除上次报部与本次相同的记录
public void createTxtFile2(String fileName){
String filePath = "E:\\比较数据"; //接口文件路径
//String hbfilePath = "e:\\合并的数据";
String filePath2 = "E:\\报部JIO比较后数据";
File allFile = new File(filePath);
File[] files = allFile.listFiles();// 获取城市目录列表
for (int k = 0; files != null && k < files.length ; k++){
filePath = files[k].getPath();
String tempPath = filePath.replace('\\', ',');
String[] paths = tempPath.split(",");
int lenInt = paths.length - 1;
String shiName = paths[lenInt]; // 城市名
this.oldFilePath = filePath + "\\current\\"; //上次报部接口文件路径
this.newFilePath = filePath2 + "\\" + shiName+ "\\"; //本次报部接口文件路径
String tempName = "";
if (fileName.equals("Jzcjbqk") || fileName.equals("Xzjbqk") )
tempName = "新增乡镇建制村一览表.txt";
if (fileName.equals("Ld") || fileName.equals("Lx"))
tempName = "新增路线一览表.txt";
CommClass cc = new CommClass();
List oldList = cc.getAllTxt(this.oldFilePath + fileName + ".txt"); //打开上次报部接口文件
List newList = cc.getAllTxt(this.newFilePath + tempName); //打开本次报部接口文件
String oldLineStr = "";
String newLineStr = "";
String [] oldchildStr = null;
String [] newChildStr = null;
String tempStr = "";
String txtStr = "";
int n = 0;
if (fileName.equals("Ld")){
for (int i=0; oldList != null && i<oldList.size(); i++){
newLineStr = (String)oldList.get(i);
newChildStr = newLineStr.split("\t");
n = 0;
for (int j=0; newList != null && j<newList.size(); j++){
oldLineStr = (String)newList.get(j);
oldchildStr = oldLineStr.split("\t");
if (oldchildStr[1].trim().equals(newChildStr[1].trim()) ){
txtStr += newLineStr + "\r\n";
System.out.println(newLineStr);
break;
}
}
}
}else {
for (int i=0; newList != null && i<newList.size(); i++){
newLineStr = (String)newList.get(i);
newChildStr = newLineStr.split("\t");
n = 0;
for (int j=0; oldList != null && j<oldList.size(); j++){
oldLineStr = (String)oldList.get(j);
oldchildStr = oldLineStr.split("\t");
//桥梁、渡口、路线、乡镇、建制村基本情况、隧道只需一种判断
if (fileName.equals("Ld")){
if (oldchildStr[1].trim().equals(newChildStr[1].trim()) ){
txtStr += oldLineStr + "\r\n";
System.out.println(oldLineStr);
break;
}
}else if (oldchildStr[0].trim().equals(newChildStr[1].trim()) ){
txtStr += oldLineStr + "\r\n";
System.out.println(oldLineStr);
break;
}
}
}
}
FileOperate fileOperate = new FileOperate();
fileOperate.newFile("e:\\比较后文件\\"+shiName + "\\"+ fileName + ".txt",txtStr);//输出文件
System.err.println("****************** "+ shiName + " 比较完成! ***********************");
}
}
//------全省汇总-----------------
public void huiZhong(){
String [] fileNames = new String[11];
fileNames[0] = "Dk";
fileNames[1] = "Ql";
fileNames[2] = "Sd";
fileNames[3] = "Jzctdqk";
fileNames[4] = "Xztdqk";
fileNames[5] = "未标注的建制村";
fileNames[6] = "未找到的建制村";
fileNames[7] = "Lx";
fileNames[8] = "Ld";
fileNames[9] = "Jzcjbqk";
fileNames[10] = "Xzjbqk";
for (int i = 0; i < fileNames.length ; i++){
createTxtFile( fileNames[i]);
//createTxtFile2( fileNames[i]);
System.out.println("*************** " + fileNames[i] + "比较结束! *********************");
}
MergeFiles mergefiles = new MergeFiles();//将全省的11个文件,合并。
try {
mergefiles.merge("E:\\比较后文件", "E:\\部接口文件汇总");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
NewSixTable dvt = new NewSixTable();
dvt.huiZhong(); //分设汇总11个接口文件(去除上次与本次报部都有的记录)
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -