源碼複制後可直接運作。
需要檔案(源碼中已包含):
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)的方法更改下,不用那兩個檔案也可以運作。