FileUtils

package com.ljf.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileUtil {

    /** 
     * 移动指定文件或文件夹(包括所有文件和子文件夹) 
     *  
     * @param fromDir 
     *            要移动的文件或文件夹 
     * @param toDir 
     *            目标文件夹 
     * @throws Exception 
     */  
    public static void moveFolderAndFileWithSelf(String from, String to) throws Exception {  
        try {  
            File dir = new File(from);  
            // 目标  
            to +=  File.separator + dir.getName();  
            File moveDir = new File(to);  
            if(dir.isDirectory()){  
                if (!moveDir.exists()) {  
                    moveDir.mkdirs();  
                }  
            }else{  
                File tofile = new File(to);  
                dir.renameTo(tofile);  
                return;  
            }  

            //System.out.println("dir.isDirectory()"+dir.isDirectory());  
            //System.out.println("dir.isFile():"+dir.isFile());  

            // 文件一览  
            File[] files = dir.listFiles();  
            if (files == null)  
                return;  

            // 文件移动  
            for (int i = 0; i < files.length; i++) {  
                System.out.println("文件名:"+files[i].getName());  
                if (files[i].isDirectory()) {  
                    moveFolderAndFileWithSelf(files[i].getPath(), to);  
                    // 成功,删除原文件  
                    files[i].delete();  
                }  
                File moveFile = new File(moveDir.getPath() + File.separator + files[i].getName());  
                // 目标文件夹下存在的话,删除  
                if (moveFile.exists()) {  
                    moveFile.delete();  
                }  
                files[i].renameTo(moveFile);  
            }  
            dir.delete();  
        } catch (Exception e) {  
            throw e;  
        }  
    }  

    /** 
     * 复制单个文件(可更名复制) 
     * @param oldPathFile 准备复制的文件源 
     * @param newPathFile 拷贝到新绝对路径带文件名(注:目录路径需带文件名) 
     * @return 
     */  
    public static void copySingleFile(String oldPathFile, String newPathFile) {  
        try {  
            int bytesum = 0;  
            int byteread = 0;  
            File oldfile = new File(oldPathFile);  
            if (oldfile.exists()) { //文件存在时  
                FileInputStream inStream = new FileInputStream(oldPathFile); //读入原文件  
                FileOutputStream fs = new FileOutputStream(newPathFile);  
                byte[] buffer = new byte[1444];  
                while ((byteread = inStream.read(buffer)) != -1) {  
                    bytesum += byteread; //字节数 文件大小  
                    //System.out.println(bytesum);  
                    fs.write(buffer, 0, byteread);  
                }  
                inStream.close();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

    /** 
     * 复制单个文件(原名复制) 
     * @param oldPathFile 准备复制的文件源 
     * @param newPathFile 拷贝到新绝对路径带文件名(注:目录路径需带文件名) 
     * @return 
     */  
    public static void copySingleFileTo(String oldPathFile, String targetPath) {  
        try {  
            int bytesum = 0;  
            int byteread = 0;  
            File oldfile = new File(oldPathFile);  
            String targetfile = targetPath + File.separator +  oldfile.getName();  
            if (oldfile.exists()) { //文件存在时  
                FileInputStream inStream = new FileInputStream(oldPathFile); //读入原文件  
                FileOutputStream fs = new FileOutputStream(targetfile);  
                byte[] buffer = new byte[1444];  
                while ((byteread = inStream.read(buffer)) != -1) {  
                    bytesum += byteread; //字节数 文件大小  
                    //System.out.println(bytesum);  
                    fs.write(buffer, 0, byteread);  
                }  
                inStream.close();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

    /** 
     * 复制整个文件夹的内容(含自身) 
     * @param oldPath 准备拷贝的目录 
     * @param newPath 指定绝对路径的新目录 
     * @return 
     */  
    public static void copyFolderWithSelf(String oldPath, String newPath) {  
        try {  
            new File(newPath).mkdirs(); //如果文件夹不存在 则建立新文件夹  
            File dir = new File(oldPath);  
            // 目标  
            newPath +=  File.separator + dir.getName();  
            File moveDir = new File(newPath);  
            if(dir.isDirectory()){  
                if (!moveDir.exists()) {  
                    moveDir.mkdirs();  
                }  
            }  
            String[] file = dir.list();  
            File temp = null;  
            for (int i = 0; i < file.length; i++) {  
                if (oldPath.endsWith(File.separator)) {  
                    temp = new File(oldPath + file[i]);  
                } else {  
                    temp = new File(oldPath + File.separator + file[i]);  
                }  
                if (temp.isFile()) {  
                    FileInputStream input = new FileInputStream(temp);  
                    FileOutputStream output = new FileOutputStream(newPath +  
                            "/" +  
                            (temp.getName()).toString());  
                    System.out.println(temp.getAbsolutePath());
                    byte[] b = new byte[1024 * 5];  
                    int len;  
                    while ((len = input.read(b)) != -1) {  
                        output.write(b, 0, len);  
                    }  
                    output.flush();  
                    output.close();  
                    input.close();  
                }  
                if (temp.isDirectory()) { //如果是子文件夹  
                    copyFolderWithSelf(oldPath + "/" + file[i], newPath);  
                }  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    } 

    public static void reNameFile(File src) {
        if (!src.exists()) {
            System.out.println("文件不存在!");
        }
        else {

            FileInputStream fileInputStream = null;
            FileOutputStream fileOutputStream = null;
            boolean isCp = true;
            try {
                fileInputStream = new FileInputStream(src);
                String absolutePath = src.getAbsolutePath();
                if(absolutePath.endsWith(".java") || absolutePath.endsWith(".xml") || absolutePath.endsWith(".txt")){
                    fileOutputStream = new FileOutputStream(absolutePath+"_bak");
                }else{
                    isCp = false;
                }
                if(isCp){
                    int len = 0;
                    byte[] data = new byte[1024];
                    while ((len = fileInputStream.read(data)) != -1) {
                        fileOutputStream.write(data, 0, len);
                    }
                    fileOutputStream.flush();
                }

            }
            catch (IOException e) {
                e.printStackTrace();
                System.out.println("文件 FileNotFoundException");
            }
            finally {
                if (fileOutputStream != null) {
                    try {
                        fileOutputStream.close();
                    }
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (fileInputStream != null) {
                    try {
                        fileInputStream.close();
                    }
                    catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(isCp){
                    src.delete();
                }


            }
        }
    }

    public static void reNameFile2(File src) {//解密,改成原來的文件後綴名
        if (!src.exists()) {
            System.out.println("文件不存在!");
        }
        else {

            FileInputStream fileInputStream = null;
            FileOutputStream fileOutputStream = null;
            boolean isCp = true;
            try {
                fileInputStream = new FileInputStream(src);
                String absolutePath = src.getAbsolutePath();
                if(absolutePath.endsWith(".java_bak") || absolutePath.endsWith(".xml_bak") || absolutePath.endsWith(".txt_bak")){
                    String substring = absolutePath.substring(0, absolutePath.lastIndexOf('_'));
                    System.out.println(substring);
                    fileOutputStream = new FileOutputStream(substring);
                }else{
                    isCp = false;
                }
                if(isCp){
                    int len = 0;
                    byte[] data = new byte[1024];
                    while ((len = fileInputStream.read(data)) != -1) {
                        fileOutputStream.write(data, 0, len);
                    }
                    fileOutputStream.flush();
                }

            }
            catch (IOException e) {
                e.printStackTrace();
                System.out.println("文件 FileNotFoundException");
            }
            finally {
                if (fileOutputStream != null) {
                    try {
                        fileOutputStream.close();
                    }
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (fileInputStream != null) {
                    try {
                        fileInputStream.close();
                    }
                    catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(isCp){
                    src.delete();
                }


            }
        }
    }
}











package com.ljf.test;

import java.io.File;

public class Test {

    static int i = 0;
    // 源文件夹
    static String url1 = "e:/aa";
    // 目标文件夹
    static String url2 = "e:/b";


    public static void main(String[] args) throws Exception {

//         FileUtil.copyFolderWithSelf(url1, url2);
         System.out.println("----解密中---");
         print(new File(url2));
         System.out.println("--ok--size:"+i);

    }


    public static void print(File f) {
        if (f != null) {
            if (f.isDirectory()) {
                File[] fileArray = f.listFiles();
                if (fileArray != null) {
                    for (int i = 0; i < fileArray.length; i++) {
                        // 递归调用
                        print(fileArray[i]);
                    }
                }
            }
            else {
//                System.out.println(f);
                FileUtil.reNameFile(f);

                i++;
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值