java複製檔案或資料夾
阿新 • • 發佈:2019-01-04
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);
@import url(/css/cuteeditor.css);
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(); } }