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++;
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章