平時大家會接觸和用到很多雲盤,比如百度雲盤、阿裡雲盤、誇克雲盤等等,其實雲盤這東西在實作的時候,代碼的設計隻能算是一半的功勞,另一半是擁有一套強大的遠端存儲和寬帶支援。今天給大家介紹的就是一個雲盤系統,實作了正常雲盤該有的大部分功能,你如果有條件,可以使用這個系統元件自己的遠端雲盤系統,也可以拿這個項目來學習。
使用的技術
後端:JAVA開發語言,SpringBoot架構,MySql資料庫
前端:html頁面,BootStrap架構
實作的功能
實作了雲盤系統該有的大部分功能,包括上傳、下載下傳、建立檔案夾、重命名檔案或檔案夾、删除檔案或檔案夾等。
部分代碼展示
/**
* 獲得分片檔案臨時儲存路徑
*
* @param tempPath
* @param userName
* @param fileName
* @return
*/
public static String getTempDir(String tempPath, String userName, String fileName) {
StringBuilder dir = new StringBuilder(tempPath);
dir.append("/").append(userName);
dir.append("/").append(DateUtil.getNowDate());
dir.append("/").append(fileName);
return dir.toString();
}
/**
* 删除檔案,可以是檔案或檔案夾
*
* @param fileName 要删除的檔案名
* @return 删除成功傳回true,否則傳回false
*/
public static boolean delete(String fileName) {
File file = new File(fileName);
if (!file.exists()) {
logger.warn("删除檔案失敗:" + fileName + "不存在!");
return false;
} else {
if (file.isFile()) {
return deleteFile(fileName);
} else {
return deleteDirectory(fileName);
}
}
}
/**
* 删除單個檔案
*
* @param fileName 要删除的檔案的檔案名
* @return 單個檔案删除成功傳回true,否則傳回false
*/
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
// 如果檔案路徑所對應的檔案存在,并且是一個檔案,則直接删除
if (file.exists() && file.isFile()) {
if (file.delete()) {
logger.warn("删除單個檔案" + fileName + "成功!");
return true;
} else {
logger.warn("删除單個檔案" + fileName + "失敗!");
return false;
}
} else {
logger.warn("删除單個檔案失敗:" + fileName + "不存在!");
return false;
}
}
/**
* 删除目錄及目錄下的檔案
*
* @param dir 要删除的目錄的檔案路徑
* @return 目錄删除成功傳回true,否則傳回false
*/
public static boolean deleteDirectory(String dir) {
// 如果dir不以檔案分隔符結尾,自動添加檔案分隔符
if (!dir.endsWith(File.separator)) {
dir = dir + File.separator;
}
File dirFile = new File(dir);
// 如果dir對應的檔案不存在,或者不是一個目錄,則退出
if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
logger.warn("删除目錄失敗:" + dir + "不存在!");
return false;
}
boolean flag = true;
// 删除檔案夾中的所有檔案包括子目錄
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
// 删除子檔案
if (files[i].isFile()) {
flag = FileUtil.deleteFile(files[i].getAbsolutePath());
if (!flag) {
break;
}
}
// 删除子目錄
else if (files[i].isDirectory()) {
flag = FileUtil.deleteDirectory(files[i].getAbsolutePath());
if (!flag) {
break;
}
}
}
if (!flag) {
logger.warn("删除目錄失敗!");
return false;
}
// 删除目前目錄
if (dirFile.delete()) {
logger.warn("删除目錄" + dir + "成功!");
return true;
} else {
return false;
}
}
擷取源碼請關注後私信“20221123”