`
qihuitoday
  • 浏览: 11659 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    Java中实现复制文件或文件夹

    Java 中实现复制文件或文件夹 在 Java 中,实现复制文件或文件夹需要使用 File 类和流操作。下面将详细介绍如何实现复制文件或文件夹的步骤和相关知识点。 复制文件 复制文件的算法相对简单,可以使用缓冲流提高...

    java中实现复制文件和文件夹

    在Java编程语言中,复制文件和文件夹...总的来说,Java中复制文件和文件夹涉及到文件I/O操作,可以通过使用基本的流类或`Files`类来实现。在处理复杂文件系统操作时,确保正确处理边界条件和异常,以保证程序的健壮性。

    java文件夹及文件复制

    在复制文件或文件夹时,我们通常会用到`File`类和`FileInputStream`与`FileOutputStream`这两个输入输出流类。 1. **`File`类**:代表文件或者目录路径名的抽象表示。它提供了一些方法来创建、删除、重命名文件或...

    java复制文件及复制文件夹

    在Java编程中,复制文件和复制文件夹是常见的操作,特别是在处理数据迁移、备份或程序部署时。下面我们将深入探讨如何使用Java实现这些功能,并提供相关的代码示例。 首先,让我们看看如何复制单个文件。Java标准库...

    java实现文件或者文件夹的复制

    改代码,用java简单的实现了文件夹、文件的复制

    java复制文件和文件夹

    在Java编程语言中,复制文件和文件夹是一项常见的任务,特别是在处理数据迁移、备份或创建应用程序副本时。本文将深入探讨如何使用Java实现文件及文件夹的复制功能,包括其内部的嵌套文件和各种格式的文件,如文本、...

    java 文件或文件夹 创建 删除 复制 移动 指定目录等

    java 文件或文件夹 创建 删除 复制 移动 指定目录等

    java实现文件和文件夹复制

    java文件夹和文件复制,

    监听文件下文件发生变化时复制文件到另一个文件夹

    本案例的标题和描述提到了“监听文件下文件发生变化时复制文件到另一个文件夹”,这通常涉及到文件系统的观察者模式(Observer Pattern)和多线程技术。 首先,我们需要理解“监听文件”这一概念。在操作系统层面,...

    java实现对文件或文件夹的压缩和解压缩

    在Java编程中,有时我们需要对文件或文件夹进行压缩和解压缩操作,这在数据传输、备份或存储优化等场景中十分常见。Apache提供了一个强大的第三方库——Commons Compress,它可以帮助我们处理各种格式的压缩文件,...

    Java文件夹复制(远程复制(网络传输),用于远程备份文件)

    Java文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...

    java 文件及文件夹 操作源码

    此文件支持对文件及文件夹结构的多种操作,其中包括: 读取文本文件内容 遍历指定路径下指定后缀的所有文件 新建目录 多级目录创建 新建文件 有编码方式的文件创建 删除文件 删除文件夹 删除指定文件夹下所有文件 ...

    java文件复制,实现文件的复制

    当需要复制一个完整的文件夹时,除了复制文件之外,还需要考虑文件夹的创建和递归复制。下面是一段示例代码: ```java private static void copyFolder(String oldPath, String newPath) { try { (new File...

    java实现一个目录下全部文件复制到另一目录

    `Files.copy()`方法可以用来复制文件,并且可以设置是否覆盖已存在的目标文件。 ```java for (File file : files) { if (file.isDirectory()) { copyDirectory(file, new File("目标目录路径" + file.getName()))...

    java解压缩文件文件夹

    本文将详细讲解如何使用Java实现文件和文件夹的压缩以及解压缩功能。 首先,Java标准库提供了`java.util.zip`包,其中包含了一些用于处理ZIP和GZIP格式的类。在“java文件解压缩”的场景下,我们主要会用到`...

    复制文件和文件夹

    在IT领域,复制文件和文件夹是日常工作中非常常见的操作,尤其对于开发者来说,了解如何高效、正确地实现这一功能至关重要。在这个小程序中,我们可能会看到如何利用编程语言的内置函数或者自定义方法来实现这一目标...

    大量复制文件,批量的对文件和文件夹进行复制

    当我们复制文件或文件夹时,实际上是将数据从一个位置的硬盘扇区复制到另一个位置,同时在文件系统中创建新的条目来追踪这些副本。 在批量复制过程中,进度条的显示是非常重要的用户体验设计。它能帮助用户了解任务...

    Java程序_复制文件.jar

    Java程序“Java程序_复制文件.jar”是一个基于Java平台的实用工具,主要目的是演示如何在Java中实现文件的复制和移动操作。这个程序对于正在学习Java输入/输出(IO)和Swing GUI库的学生来说是一个很好的参考实例。...

    使用jsch中的ChannelSftp上传文件和文件夹.pdf

    在Java开发中,上传文件和文件夹是一项常见的任务,例如在服务器上上传文件或文件夹。JSch库提供了一个名为ChannelSftp的类,可以用来上传文件和文件夹。本文将详细介绍如何使用JSch中的ChannelSftp上传文件和文件夹...

    JAVA 对文件和文件夹的操作代码示例

    JAVA 文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件夹的...

Global site tag (gtag.js) - Google Analytics