package ims.common.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @title
* @author QQ:407634039
* @date Jun 28, 2011
* @function 文件基本操作
* @version v 1.1
*/
public class CopyFilesUtil {
private static Log log = LogFactory.getLog(CopyFilesUtil.class);
private static List<File> files = new ArrayList<File>();
private static List<String> strs = new ArrayList<String>();
/**
* 文件夾或文件復(fù)制
*
* @param file
*/
// 初始化files
static {
if (files.size() > 0) {
for (int i = 0; i < files.size(); i++) {
files.remove(i);
}
}
}
/**
* 復(fù)制文件夾或文件
*
* @param srcFile
* 源文件
* @param tarFilepath
* 復(fù)制路徑
*/
public void copyFiles(File srcFile, String tarFilepath) {
log.debug(“復(fù)制源文件名字:” + srcFile.getName() + “^^^^^^|||startTime>>>>”
+ System.currentTimeMillis());
InputStream in = null; // 輸入流
OutputStream out = null;// 輸出流
File tarFile = new File(tarFilepath);
if (srcFile.isDirectory()) {
if (!tarFile.exists()) {
tarFile.mkdirs();
}
File[] files = srcFile.listFiles();
for (File file : files) {
copyFiles(file, tarFilepath + File.separator + file.getName());
}
} else if (srcFile.isFile()) {
try {
in = new FileInputStream(srcFile);
out = new FileOutputStream(tarFile);
byte[] mybyte = new byte[1024];
int length = 0;
while ((length = in.read(mybyte)) != -1) {
out.write(mybyte, 0, length);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 獲得文件夾中某種文件格式的所有文件
*
* @param fileFormat
* 需得到的文件格式
* @param srcFile
* 源文件或文件夾
* @return
*/
public List<File> getFormatFiles(String fileFormat, File srcFile) {
log.debug(“start Time>>>” + System.currentTimeMillis());
if (srcFile.isFile()) {
String fileName = srcFile.getName();
String format = fileName.substring(fileName.lastIndexOf(“.”) + 1);
log.debug(“源文件格式為:” + format);
if (format.trim().equalsIgnoreCase(fileFormat.trim())) {
files.add(srcFile);
log.debug(“得到” + format + “格式的文件”);
}
} else {
File[] f = srcFile.listFiles();
for (File file : f) {
getFormatFiles(fileFormat, file);
}
}
return files;
}
/**
*
* 解析文件夾或文件,得到Excel格式文件的內(nèi)容
*
* @param srcFile
* 源文件或文件夾
* @param column
* 從那列開(kāi)始取得數(shù)據(jù) 0開(kāi)始
* @param row
* 從那行開(kāi)始取得數(shù)據(jù) 0開(kāi)始
* @throws BiffException
* @throws IOException
* @return 字符串類(lèi)型,每行中的數(shù)據(jù)以;隔開(kāi),每列數(shù)據(jù)以,隔開(kāi) 如:1,2;3,4;
*/
public List<String> parseExcelFiles(File srcFile, int column, int row)
throws BiffException, IOException {
log.debug(“start Time>>>” + System.currentTimeMillis());
List<File> files = getFormatFiles(“xls”, srcFile);
Iterator<File> it = files.iterator();
while (it.hasNext()) {
String str = “”;
Workbook book = Workbook.getWorkbook(it.next());
Sheet xmlSheet = book.getSheet(0);
int sheetColumns = xmlSheet.getColumns();
int sheetRows = xmlSheet.getRows();
log.debug(“Sheet Columns:” + sheetColumns + “rn” + “Sheet Rows:”
+ sheetRows);
for (int i = row; i < sheetRows – row; i++) {
for (int j = column; j < sheetColumns – column; j++) {
String cell = xmlSheet.getCell(j, i).getContents();// 取得內(nèi)容
str = str + cell + “,”;
}
str = str.substring(0, str.lastIndexOf(“,”)-1);// 去除多余的,符號(hào)
str = str + “;”;
}
strs.add(str);// ADD TO List<String>
}
return strs;
}
/**
* 解析Excel,獲取全部信息
*
* @param srcFile
* 源文件或文件夾
* @return
* @throws BiffException
* @throws IOException
*/
public List<String> parseExcelFilesAllData(File srcFile)
throws BiffException, IOException {
return parseExcelFiles(srcFile, 0, 0);
}
public static void main(String[] args) {
File srcFile = new File(“F://wd”);
// new CopyFilesUtil().copyFiles(srcFile, “F://sqlCopy”);
/*
* List<File> list = new CopyFilesUtil().getFormatFiles(“pdc”,
* srcFile); Iterator<File> it = list.iterator(); while (it.hasNext()) {
* log.debug(“文件名:” + it.next().getName()); }
*/
try {
List<String> list = new CopyFilesUtil()
.parseExcelFilesAllData(srcFile);
Iterator<String> it = list.iterator();
while (it.hasNext()) {
log.debug(“每個(gè)文件的數(shù)據(jù)>>>>>>>” + it.next().toString());
}
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}