/**
*
*/
package com.cpic.pcrm.BusinOppor.Service;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import com.cpic.pcrm.common.FileUtilsEx;
import com.cpic.pcrm.fnd.FndDataSet.FndFileT;
import com.eos.runtime.core.ApplicationContext;
import com.eos.system.annotation.Bizlet;
import com.eos.system.exception.EOSRuntimeException;
import com.sun.java_cup.internal.internal_error;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author Administrator
* @date 2017-04-03 10:28:22
*
*/
@Bizlet("文件的复制和创建xml文件和压缩文件")
public class FileHandler {
/**
* @param srcFile
* @param targetFile
* @param fileName
* @param requestId
* @author Administrator
*/
@Bizlet("")
public static void fileCopy(FndFileT[] fndFiles,
String requestId) {
//目标路径
String targetFile = ApplicationContext.getInstance().getWarRealPath()+"zip\\";
//System.out.println(targetFile);
DocumentBuilder db = getDocumentBuilder();
Document document = db.newDocument();
document.setXmlStandalone(true);
Element Results = document.createElement("Results");
Element Files = document.createElement("Files");
for(int i = 0; i<fndFiles.length; i++){
//for (FndFileT fileT : fndFiles) {
//源路径
String filePath = fndFiles[i].getString("FILE_PATH");
//源文件名
String fileName = fndFiles[i].getString("FILE_NAME");
// 1.先拷贝文件到指定的文件夹
File src = new File(filePath);//源路径
//System.out.println("src;"+src);
File destDirectory = new File(targetFile);//目标路径
if(!destDirectory.exists()){
destDirectory.mkdir();
}
try {
FileUtilsEx.copyFileToDirectory(src, destDirectory);
renameFile(targetFile, destDirectory.listFiles()[i].getName(), "00"+(i+1));
// File newFile = new File(destDirectory+ File.separator+"00"+i);
// destDirectory.renameTo(newFile);
// fileid=destDirectory.listFiles()[0].getName().replace(destDirectory.listFiles()[0].getName(),"00"+(i+1));
// System.out.println(fileid);
} catch (Exception e) {
throw new EOSRuntimeException("100002", e.getMessage(), e);
}
Element File = document.createElement("File");
Element Fileid = document.createElement("Fileid");
Element FileName = document.createElement("FileName");
filePath = filePath.substring(filePath.lastIndexOf("/")+1);
Fileid.setTextContent("00"+(i+1));
FileName.setTextContent(fileName);
File.appendChild(Fileid);
File.appendChild(FileName);
Files.appendChild(File);
}
Results.appendChild(Files);
document.appendChild(Results);
// 创建TransformerFactory对象
TransformerFactory tff = TransformerFactory.newInstance();
try {
// 创建Transformer对象
Transformer tf = tff.newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.transform(new DOMSource(document), new StreamResult(new File(
targetFile + "S_" + requestId + ".xml")));
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
// 重命名文件
public static void renameFile(String path, String oldName, String newName){
if(!oldName.equals(newName)){
File oldFile = new File(path+"/"+oldName);
File newFile = new File(path+"/"+newName);
if(newFile.exists()){
System.out.println(newName+"已经存在");}
else{
oldFile.renameTo(newFile);
}
}
}
public static DocumentBuilder getDocumentBuilder() {
// 创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 创建DocumentBuilder对象
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
return db;
}
@Bizlet("文件压缩后,删除原文件")
public static void zip(String requestId) throws Exception{
String zipInputPath = ApplicationContext.getInstance().getWarRealPath()+"zip\\";
String zipOutPath = ApplicationContext.getInstance().getWarRealPath()+"ziped\\"+"S_"+requestId+".zip";
ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(zipOutPath));
File files=new File(zipInputPath);
String[] filesList=files.list();
for(int i=0;i<filesList.length;i++){
FileInputStream fis= new FileInputStream(zipInputPath+filesList[i]);
zip.putNextEntry(new ZipEntry(filesList[i]));
int len;
byte[] buf=new byte[1024];
while((len=fis.read(buf))!=-1){
zip.write(buf, 0, len);
}
fis.close();
}
zip.close();
File[] fileList = files.listFiles();
for (File file : fileList) {
if(!file.getName().endsWith(".zip")){
file.delete();
}
}
}
}
*
*/
package com.cpic.pcrm.BusinOppor.Service;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import com.cpic.pcrm.common.FileUtilsEx;
import com.cpic.pcrm.fnd.FndDataSet.FndFileT;
import com.eos.runtime.core.ApplicationContext;
import com.eos.system.annotation.Bizlet;
import com.eos.system.exception.EOSRuntimeException;
import com.sun.java_cup.internal.internal_error;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author Administrator
* @date 2017-04-03 10:28:22
*
*/
@Bizlet("文件的复制和创建xml文件和压缩文件")
public class FileHandler {
/**
* @param srcFile
* @param targetFile
* @param fileName
* @param requestId
* @author Administrator
*/
@Bizlet("")
public static void fileCopy(FndFileT[] fndFiles,
String requestId) {
//目标路径
String targetFile = ApplicationContext.getInstance().getWarRealPath()+"zip\\";
//System.out.println(targetFile);
DocumentBuilder db = getDocumentBuilder();
Document document = db.newDocument();
document.setXmlStandalone(true);
Element Results = document.createElement("Results");
Element Files = document.createElement("Files");
for(int i = 0; i<fndFiles.length; i++){
//for (FndFileT fileT : fndFiles) {
//源路径
String filePath = fndFiles[i].getString("FILE_PATH");
//源文件名
String fileName = fndFiles[i].getString("FILE_NAME");
// 1.先拷贝文件到指定的文件夹
File src = new File(filePath);//源路径
//System.out.println("src;"+src);
File destDirectory = new File(targetFile);//目标路径
if(!destDirectory.exists()){
destDirectory.mkdir();
}
try {
FileUtilsEx.copyFileToDirectory(src, destDirectory);
renameFile(targetFile, destDirectory.listFiles()[i].getName(), "00"+(i+1));
// File newFile = new File(destDirectory+ File.separator+"00"+i);
// destDirectory.renameTo(newFile);
// fileid=destDirectory.listFiles()[0].getName().replace(destDirectory.listFiles()[0].getName(),"00"+(i+1));
// System.out.println(fileid);
} catch (Exception e) {
throw new EOSRuntimeException("100002", e.getMessage(), e);
}
Element File = document.createElement("File");
Element Fileid = document.createElement("Fileid");
Element FileName = document.createElement("FileName");
filePath = filePath.substring(filePath.lastIndexOf("/")+1);
Fileid.setTextContent("00"+(i+1));
FileName.setTextContent(fileName);
File.appendChild(Fileid);
File.appendChild(FileName);
Files.appendChild(File);
}
Results.appendChild(Files);
document.appendChild(Results);
// 创建TransformerFactory对象
TransformerFactory tff = TransformerFactory.newInstance();
try {
// 创建Transformer对象
Transformer tf = tff.newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.transform(new DOMSource(document), new StreamResult(new File(
targetFile + "S_" + requestId + ".xml")));
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
// 重命名文件
public static void renameFile(String path, String oldName, String newName){
if(!oldName.equals(newName)){
File oldFile = new File(path+"/"+oldName);
File newFile = new File(path+"/"+newName);
if(newFile.exists()){
System.out.println(newName+"已经存在");}
else{
oldFile.renameTo(newFile);
}
}
}
public static DocumentBuilder getDocumentBuilder() {
// 创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 创建DocumentBuilder对象
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
return db;
}
@Bizlet("文件压缩后,删除原文件")
public static void zip(String requestId) throws Exception{
String zipInputPath = ApplicationContext.getInstance().getWarRealPath()+"zip\\";
String zipOutPath = ApplicationContext.getInstance().getWarRealPath()+"ziped\\"+"S_"+requestId+".zip";
ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(zipOutPath));
File files=new File(zipInputPath);
String[] filesList=files.list();
for(int i=0;i<filesList.length;i++){
FileInputStream fis= new FileInputStream(zipInputPath+filesList[i]);
zip.putNextEntry(new ZipEntry(filesList[i]));
int len;
byte[] buf=new byte[1024];
while((len=fis.read(buf))!=-1){
zip.write(buf, 0, len);
}
fis.close();
}
zip.close();
File[] fileList = files.listFiles();
for (File file : fileList) {
if(!file.getName().endsWith(".zip")){
file.delete();
}
}
}
}