天天看點

【檔案管理】檔案操作:檔案移動、檔案/檔案夾删除(帶源碼)

源碼複制後可直接運作。

需要檔案(源碼中已包含):

1.commons-lang-2.4.jar

2.Num62.java(提供62個字母和數字,含大小寫)

源碼下載下傳位址(1積分):JavaFileOpUtil_源碼+測試

另:新人求積分。若不想花積分的朋友,可以将”擷取唯一的檔案名”(getUniqueFilename)的方法更改下,不用那兩個檔案也可以運作。

1.檔案操作測試

package com.mereking.main;
import org.apache.commons.lang.StringUtils;
import com.mereking.util.FileUtils;

/**
 * 檔案操作測試
 * @author mereking
 */
public class FileOpTest {
    public static void main(String args[]) {
        // 1.移動檔案
        String oriPath = "原檔案夾\\測試檔案.txt ";
        String basePath = "D:\\測試檔案\\";
        String secPath = "移動後的檔案夾\\";
        String ext = ".txt";
        String fileUlr = FileUtils.moveFile(oriPath, basePath, secPath, ext);
        if (StringUtils.isNotBlank(fileUlr)) {
            System.out.println("檔案移動成功");
        } else {
            System.out.println("檔案移動失敗");
        }
        // 2.删除檔案/删除檔案夾
        String oriPathDelete = "删除用檔案夾\\";
        String basePathDelete = "D:\\測試檔案\\";
        boolean result = FileUtils.deleteFolder(basePathDelete+oriPathDelete);
        if (result) {
            System.out.println("檔案夾/檔案删除成功");
        } else {
            System.out.println("檔案夾/檔案删除失敗");
        }
    }
}
           

2.檔案操作工具

方法目錄:

- 擷取唯一的檔案名

- 移動檔案,并給該檔案定義唯一一個檔案名

- 删除檔案夾

package com.mereking.util;

import java.io.File;
import java.util.Date;

import org.apache.commons.lang.RandomStringUtils;

public class FileUtils {
    /**
     * 方法目錄
     * 1.擷取唯一的檔案名
     * 2.移動檔案,并給該檔案定義唯一一個檔案名
     * 3.删除檔案夾
     */

    /**
     * 擷取唯一的檔案名
     * @param ext 檔案擴充名
     * @return
     */
    public static String getUniqueFilename(String ext) {
        // 目前日期的ms數+62個字母和數字,含大小寫随機選擇四位+擴充名建構唯一檔案名
        return new Date().getTime() + RandomStringUtils.random(, Num62.N62_CHARS) + "." + ext;

        // N62_CHARS具體内容如下:(可以打開其他相關代碼的Num62類 檢視其它具體内容)
        /*
        //62個字母和數字,含大小寫
        public static final char[] N62_CHARS = { '0', '1', '2', '3', '4', '5', '6',
                '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
                'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
                'x', 'y', 'z' };
        */
    }

    /**
     * 移動檔案,并給該檔案定義唯一一個檔案名
     * @param oriPath 原檔案位置
     * @param basePath 項目路徑,為基礎路徑
     * @param secPath 第二段移動的目标檔案路徑 "某某/某某/"
     * @param ext 檔案擴充名
     * @return 傳回移動後檔案路徑
     */
    public static String moveFile(String oriPath,String basePath, String secPath, String ext) {
        File file = new File(basePath + oriPath);
        if(file.isFile()) {
            // 擷取唯一檔案名(可有效解決檔案移動後沖突問題)
            String newFilName = getUniqueFilename(ext);
            String newUrl = basePath + secPath + newFilName;
            File tempFile = new File(newUrl);
            // 判斷該檔案夾是否存在
            if (!tempFile.getParentFile().exists()) {
                // 檔案夾不存在則建立該檔案夾
                tempFile.getParentFile().mkdirs();
            }
            // 移動檔案
            file.renameTo(tempFile);
            return secPath + newFilName;
        } else {
            System.out.println("檔案不存在:"+basePath + oriPath);
        }
        return null;
    }

    /**
     * 删除檔案夾
     * @param filePath 檔案夾位置
     * @return 傳回删除是否成功
     */
    public static boolean deleteFolder(String filePath) {
        boolean result = false;
        File file = new File(filePath);
        if(file.exists()) {
            if(file.isDirectory()) {
                File[] files = file.listFiles();
                // 删除目錄下的所有檔案
                for(int i = ;i < files.length;i ++) {
                    if (files[i].isDirectory()) {
                        // 若為檔案夾,則遞歸處理内部檔案
                        result = deleteFolder(files[i].getAbsolutePath());
                    } else {
                        result = files[i].delete();
                    }
                    // 若中間出現錯誤,則停止删除
                    if (!result) return result;
                }
                result = file.delete();
            } else {
                result = file.delete();
            }
        } else {
            System.out.println("檔案/檔案夾不存在:"+filePath);
        }
        return result;
    }
}
           

源碼複制後可直接運作。

需要檔案(源碼中已包含):

1.commons-lang-2.4.jar

2.Num62.java(提供62個字母和數字,含大小寫)

源碼下載下傳位址(1積分):JavaFileOpUtil_源碼+測試

另:新人求積分。若不想花積分的朋友,可以将”擷取唯一的檔案名”(getUniqueFilename)的方法更改下,不用那兩個檔案也可以運作。