您的位置:首页 > 编程语言 > Java开发

java复制文件或文件夹

2013-07-03 14:29 309 查看


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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: