package com.xuanwu.mtoserver.util;
import java.io.*;
/**
* @author Toby 复制文件夹或文件夹
*/
public class FileUtil {
public static void main(String args[]) throws IOException {
// 源文件夹
String url1 = "D:/user/test/";
// 目标文件夹
String url2 = "D:/user/testcopy/";
// 创建目标文件夹
(new File(url2)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(url1)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 复制文件
String type = file[i].getName().substring(file[i].getName().lastIndexOf(".") + 1);
if (type.equalsIgnoreCase("txt"))// 转码处理
copyFile(file[i], new File(url2 + file[i].getName()), MTOServerConstants.CODE_UTF_8, MTOServerConstants.CODE_GBK);
else
copyFile(file[i], new File(url2 + file[i].getName()));
}
if (file[i].isDirectory()) {
// 复制目录
String sourceDir = url1 + File.separator + file[i].getName();
String targetDir = url2 + File.separator + file[i].getName();
copyDirectiory(sourceDir, targetDir);
}
}
}
// 复制文件
public static void copyFile(File sourceFile, File targetFile) throws IOException {
BufferedInputStream inBuff = null;
BufferedOutputStream outBuff = null;
try {
// 新建文件输入流并对它进行缓冲
inBuff = new BufferedInputStream(new FileInputStream(sourceFile));
// 新建文件输出流并对它进行缓冲
outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));
// 缓冲数组
byte[] b = new byte[1024 * 5];
int len;
while ((len = inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此缓冲的输出流
outBuff.flush();
} finally {
// 关闭流
if (inBuff != null)
inBuff.close();
if (outBuff != null)
outBuff.close();
}
}
// 复制文件夹
public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile = file[i];
// 目标文件
File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
copyFile(sourceFile, targetFile);
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1 = sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2 = targetDir + "/" + file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
/**
*
* @param srcFileName
* @param destFileName
* @param srcCoding
* @param destCoding
* @throws IOException
*/
public static void copyFile(File srcFileName, File destFileName, String srcCoding, String destCoding) throws IOException {// 把文件转换为GBK文件
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(srcFileName), srcCoding));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFileName), destCoding));
char[] cbuf = new char[1024 * 5];
int len = cbuf.length;
int off = 0;
int ret = 0;
while ((ret = br.read(cbuf, off, len)) > 0) {
off += ret;
len -= ret;
}
bw.write(cbuf, 0, off);
bw.flush();
} finally {
if (br != null)
br.close();
if (bw != null)
bw.close();
}
}
/**
*
* @param filepath
* @throws IOException
*/
public static void del(String filepath) throws IOException {
File f = new File(filepath);// 定义文件路径
if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
f.delete();
} else {// 若有则把文件放进数组,并判断是否有下级目录
File delFile[] = f.listFiles();
int i = f.listFiles().length;
for (int j = 0; j < i; j++) {
if (delFile[j].isDirectory()) {
del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
}
delFile[j].delete();// 删除文件
}
}
}
}
}
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.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import com.xuanwu.smap.comapi.SmapMtMessage;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* @author Toby 通用工具类
*/
public class Utils {
/**
* @param args
* @throws Exception
* @throws IOException
*/
public static void main(String[] args) throws IOException, Exception {
// TODO Auto-generated method stub
// File file = new File("D:/user/mms.xml");
// System.out.println(file.renameTo(new File("D:/user/mms5.xml")));
// 1
// compress("D:/user/test", "D:/user/test.zip");
/*
* String fileName = "D:/user/88.zip"; try {
* System.out.println(encryptBASE64(readFileToBytes(fileName))); } catch
* (Exception e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/
/*
* String mi
* ="UEsDBBQACAA";
* RandomAccessFile inOut = new RandomAccessFile(
* "D:/user/sample.","rw"); inOut.write(decryptBASE64(mi));
* inOut.close();
*/
// System.out.println(new String(decryptBASE64("5rWL6K+V"),"utf-8"));
// 2
// String xml =
// createXML("1828","qww","123456","10658103619033","15918542546",encryptBASE64("两款茶饮润肺护肤防过敏".getBytes()),encryptBASE64(readFileToBytes("D:/user/test.zip")));
// System.out.println(xml);
/*
* String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"
* standalone=\"yes\"?><TaskDataTransfer4ERsp
* xmlns=\" http://www.aspirehld.com/iecp/TaskDataTransfer4ERsp \"><ResultCode>2000</ResultCode><TaskId></TaskId><ResultMSG>没有获得IP鉴权!</ResultMSG></TaskDataTransfer4ERsp>";
*
* Document doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element
* rootElt = doc.getRootElement(); // 获取根节点
*
* String resultCode = rootElt.element("ResultCode").getTextTrim();
* String TaskId = rootElt.element("TaskId").getTextTrim(); String
* ResultMSG = rootElt.element("ResultMSG").getTextTrim();
* System.out.println(" "+resultCode+" "+TaskId+" "+ResultMSG);
*/
}
/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public static byte [] decryptBASE64(String key) throws Exception {
return ( new BASE64Decoder()).decodeBuffer(key);
}
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64( byte [] key) throws Exception {
return ( new BASE64Encoder()).encodeBuffer(key);
}
/**
* 获取路径下所有文件名
*
* @param path
* @return
*/
public static String[] getFile(String path) {
File file = new File(path);
String[] name = file.list();
return name;
}
/**
*
* @param sourceDirPath
* @param targetDirPath
* @throws IOException
*/
public static void copyDir(String sourceDirPath, String targetDirPath) throws IOException {
// 创建目标文件夹
( new File(targetDirPath)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = ( new File(sourceDirPath)).listFiles();
for ( int i = 0 ; i < file.length; i ++ ) {
if (file[i].isFile()) {
// 复制文件
String type = file[i].getName().substring(file[i].getName().lastIndexOf( " . " ) + 1 );
if (type.equalsIgnoreCase( " txt " ))
FileUtil.copyFile(file[i], new File(targetDirPath + file[i].getName()), MTOServerConstants.CODE_UTF_8,
MTOServerConstants.CODE_GBK);
else
FileUtil.copyFile(file[i], new File(targetDirPath + file[i].getName()));
}
if (file[i].isDirectory()) {
// 复制目录
String sourceDir = sourceDirPath + File.separator + file[i].getName();
String targetDir = targetDirPath + File.separator + file[i].getName();
FileUtil.copyDirectiory(sourceDir, targetDir);
}
}
}
/**
* 读取文件中内容
*
* @param path
* @return
* @throws IOException
*/
public static String readFileToString(String path) throws IOException {
String resultStr = null ;
FileInputStream fis = null ;
try {
fis = new FileInputStream(path);
byte [] inBuf = new byte [ 2000 ];
int len = inBuf.length;
int off = 0 ;
int ret = 0 ;
while ((ret = fis.read(inBuf, off, len)) > 0 ) {
off += ret;
len -= ret;
}
resultStr = new String( new String(inBuf, 0 , off, MTOServerConstants.CODE_GBK).getBytes());
} finally {
if (fis != null )
fis.close();
}
return resultStr;
}
/**
* 文件转成字节数组
*
* @param path
* @return
* @throws IOException
*/
public static byte [] readFileToBytes(String path) throws IOException {
byte [] b = null ;
InputStream is = null ;
File f = new File(path);
try {
is = new FileInputStream(f);
b = new byte [( int ) f.length()];
is.read(b);
} finally {
if (is != null )
is.close();
}
return b;
}
/**
* 将byte写入文件中
*
* @param fileByte
* @param filePath
* @throws IOException
*/
public static void byteToFile( byte [] fileByte, String filePath) throws IOException {
OutputStream os = null ;
try {
os = new FileOutputStream( new File(filePath));
os.write(fileByte);
os.flush();
} finally {
if (os != null )
os.close();
}
}
/**
* 将目录文件打包成zip
*
* @param srcPathName
* @param zipFilePath
* @return 成功打包true 失败false
*/
public static boolean compress(String srcPathName, String zipFilePath) {
if (strIsNull(srcPathName) || strIsNull(zipFilePath))
return false ;
File zipFile = new File(zipFilePath);
File srcdir = new File(srcPathName);
if ( ! srcdir.exists())
return false ;
Project prj = new Project();
Zip zip = new Zip();
zip.setProject(prj);
zip.setDestFile(zipFile);
FileSet fileSet = new FileSet();
fileSet.setProject(prj);
fileSet.setDir(srcdir);
zip.addFileset(fileSet);
zip.execute();
return zipFile.exists();
}
/**
* 判空字串
*
* @param str
* @return 为空true
*/
public static boolean strIsNull(String str) {
return str == null || str.equals( "" );
}
/**
* 折分数组
*
* @param ary
* @param subSize
* @return
*/
public static List < List < Object >> splitAry(Object[] ary, int subSize) {
int count = ary.length % subSize == 0 ? ary.length / subSize : ary.length / subSize + 1 ;
List < List < Object >> subAryList = new ArrayList < List < Object >> ();
for ( int i = 0 ; i < count; i ++ ) {
int index = i * subSize;
List < Object > list = new ArrayList < Object > ();
int j = 0 ;
while (j < subSize && index < ary.length) {
list.add(ary[index ++ ]);
j ++ ;
}
subAryList.add(list);
}
return subAryList;
}
/**
* @param mobile
* @return
*/
public static String ArrayToString(Object[] mobile) {
String destId = "" ;
for (Object phone : mobile) {
destId += " " + (String) phone;
}
return destId.trim();
}
}
文正出自:http://www.blogjava.net/toby/archive/2011/12/05/365585.html