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();// 删除文件 } } } } } package com.xuanwu.mtoserver.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.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(); } }