读书人

java复制资料或文件夹

发布时间: 2013-07-04 11:45:28 作者: rapoo

java复制文件或文件夹

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();//?删除文件
????????????????}
????????????}
????????}
????}
}




<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->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

读书人网 >编程

热点推荐