java复制文件或文件夹

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

}

你可能感兴趣的:(java复制文件或文件夹)