java复制文件或文件夹

来源:互联网 发布:逆战刷枪软件手机版 编辑:程序博客网 时间:2024/05/16 06:23
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();    }}

转自 http://www.blogjava.net/toby/archive/2011/12/05/365585.html

下面是从main中抽取的一个方法用上递归是的遍历路径下所有文件

public static void getFile(String url1,String url2) throws IOException {File[] file = (new File(url1)).listFiles();for (int i = 0; i < file.length; i++) {if (file[i].isFile()) {// 创建目标文件夹(new File(url2)).mkdirs();System.out.println("进去了");// 复制文件String type = file[i].getName().substring(file[i].getName().lastIndexOf(".") + 1);if (type.equalsIgnoreCase("txt"))// 转码处理copyFile(file[i], new File(url2 + file[i].getName()),"utf-8", "gbk");elsecopyFile(file[i], new File(url2 + file[i].getName()));} else {url1=file[i].getAbsolutePath();url2="F:/图书/04现代当代1"+file[i].getAbsolutePath().substring("F:/图书/04现代当代".length(),file[i].getAbsolutePath().length());getFile(url1,url2);}System.out.println("出来了");if (file[i].isDirectory()) {// 复制目录String sourceDir = url1 + File.separator + file[i].getName();String targetDir = url2 + File.separator + file[i].getName();copyDirectiory(sourceDir, targetDir);}}}


0 0
原创粉丝点击