平时大家会接触和用到很多云盘,比如百度云盘、阿里云盘、夸克云盘等等,其实云盘这东西在实现的时候,代码的设计只能算是一半的功劳,另一半是拥有一套强大的远程存储和宽带支持。今天给大家介绍的就是一个云盘系统,实现了常规云盘该有的大部分功能,你如果有条件,可以使用这个系统组件自己的远程云盘系统,也可以拿这个项目来学习。
使用的技术
后端: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”
,