📄 filecombine.java
字号:
/*
* Created on 2009-1-5
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package filesplit.src;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.jdom.xpath.*;
//import org.saxpath.SAXPathException;
/**
* @author zhuwenhai
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class FileCombine {
String logFile;
String sourceDir;
String errorDir;
ArrayList al = new ArrayList();
public static void main(String args[])
{
FileCombine fc =new FileCombine();
//fc.sourceDir = args[0];
fc.combine();
}
public void combine()
{
try {
init("filecombine.xml");
PrintStream log = new PrintStream(new FileOutputStream(new File(logFile), true), true, "GBK");
System.setOut(log);
System.setErr(log);
} catch (JDOMException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
String targetDir;
String prefix;
String patentXpath;
String childXpath;
String idXpath;
String suffix="ok_.xml";
String r_pre="";
String r_dir="";
//long r_time=0;
for (int k=0; k<al.size(); k++)
{
targetDir = (String)((Hashtable)al.get(k)).get("targetDir");
prefix = (String)((Hashtable)al.get(k)).get("prefix");
patentXpath = (String)((Hashtable)al.get(k)).get("patentXpath");
childXpath = (String)((Hashtable)al.get(k)).get("childXpath");
idXpath = (String)((Hashtable)al.get(k)).get("idXpath");
Document doc = null;
Element root = null;
Element tline = null;
SAXBuilder sb = new SAXBuilder();
try
{
MyFileFilter filterOver = new MyFileFilter(prefix, suffix);
//File ff = new File("d:\\tmp\\");
File ffOver = new File(sourceDir);
File[] flOver = ffOver.listFiles(filterOver);
if(flOver.length == 0)
{
continue;
}
for(int m=0; m<flOver.length; m++)
{
r_pre = flOver[m].getName().substring(0, flOver[m].getName().indexOf('-'));
//r_time=(new Date()).getTime();
System.out.println();
System.out.println((new Date(System.currentTimeMillis())) + " start combine " + r_pre + "'s files: ");
MyFileFilter filter = new MyFileFilter(r_pre, ".xml", suffix);
//File ff = new File("d:\\tmp\\");
File ff1 = new File(sourceDir);
File[] fl1 = ff1.listFiles(filter);
r_dir = sourceDir+"/"+ r_pre;
new File(r_dir).mkdir();
for(int i=0; i<fl1.length; i++)
{
fl1[i].renameTo(new File(r_dir+"/"+fl1[i].getName()));
}
flOver[m].renameTo(new File(r_dir+"/"+flOver[m].getName()));
File ff = new File(r_dir);
File[] fl = ff.listFiles(filter);
for(int i=0; i<fl.length ; i++)
{
try
{
if(i==0)
{
doc = sb.build(fl[0]);
//XPath.setXPathClass(org.jdom.xpath.JaxenXPath);
XPath xp = XPath.newInstance(patentXpath); //"/Message/COMMAND/InpaymentStatementRequest/InpaymentStatement"
tline = (Element)xp.selectSingleNode(doc);
System.out.println(" -> combine file " + fl[i].getName() + "success");
}
else
{
Document tmpdoc = sb.build(fl[i]);
XPath xp = XPath.newInstance(childXpath); //"/Message/COMMAND/InpaymentStatementRequest/InpaymentStatement/InpaymentLine");
List lines = xp.selectNodes(tmpdoc);
//List lines = tmproot.getChild("COMMAND").getChild("InpaymentStatementRequest").getChild("InpaymentStatement").getChildren("InpaymentLine");
int cnt = lines.size();
for(int j=0; j<cnt; j++)
{
Element el = (Element)lines.get(j);
el.detach();
tline.addContent(el);
}
System.out.println(" -> combine file:" + fl[i].getName() + " record number:"+cnt+ " success");
}
} catch (JDOMException e) {
System.out.println(e.getMessage());
System.out.println(" file:"+fl[i].getName()+" deal failed!");
e.printStackTrace();
}
}
XMLOutputter XMLOut = new XMLOutputter();
Format format = XMLOut.getFormat();
format.setEncoding("GBK");
FileWriter fw = new FileWriter(r_dir+"/"+r_pre+".xml");
XMLOut.output(doc, fw);
fw.close();
System.out.println((new Date(System.currentTimeMillis()))+" end combine " + r_pre + " files.");
File mv = new File(r_dir+"/"+r_pre+".xml");
boolean b = mv.renameTo(new File(targetDir + "/"+r_pre+".xml"));
if(b==false)
{
System.out.println("mv file "+r_dir+"/"+r_pre+".xml"+ " failed!");
}
}
}
catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
private void init(String configFile)
throws JDOMException, IOException
{
SAXBuilder b = new SAXBuilder();
Document doc = b.build(new File(configFile));
Element el = doc.getRootElement();
logFile = el.getAttribute("logFile").getValue().trim();
sourceDir = el.getAttribute("sourceDir").getValue().trim();
errorDir = el.getAttribute("errorDir").getValue().trim();
List list = el.getChildren("combine_section");
Iterator it = list.iterator();
while(it.hasNext())
{
Hashtable ht = new Hashtable();
Element e = (Element)it.next();
ht.put("targetDir", e.getChildTextTrim("targetDir"));
ht.put("prefix", e.getChildTextTrim("prefix"));
ht.put("patentXpath", e.getChildTextTrim("patentXpath"));
ht.put("childXpath", e.getChildTextTrim("childXpath"));
ht.put("idXpath", e.getChildTextTrim("idXpath"));
al.add(ht);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -