java复制文件或文件夹

@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();
    }
}

posted on 2011-12-05 14:17 tobyxiong 阅读(8897) 评论(4)  编辑  收藏 所属分类: java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值