用栈实现递归
class Data
{
public File file;
//记录相对路径
public String path;
}
public void uploadPlugins(String path,String bucketName) {
//指定一个路径
// String path="F:\\BaiduNetdiskDownload\\141黑马头条\\day06_文章定时发布\\页面静态化\\资料\\模板文件\\plugins";
//用栈实现递归
Stack<Data> stack=new Stack<>();
File file=null;
file=new File(path);
Data one=new Data();
one.file=file;
one.path="";
stack.push(one);
while(!stack.isEmpty())
{
Data tmp=stack.pop();
file=tmp.file;
String ParentPath=tmp.path;
if(file.exists()) {
String name = file.getName();
if (file.isDirectory())
{
List<File> fileList= Arrays.asList(file.listFiles());
for(File f:fileList)
{
Data data=new Data();
data.file=f;
data.path=ParentPath+"/"+name;
stack.push(data);
}
}
else
{
try {
FileInputStream fileInputStream=new FileInputStream(file);
String minioPath=ParentPath+"/"+file.getName();
String substring = minioPath.substring(1, minioPath.length());
PutObjectArgs putObjectArgs=PutObjectArgs.builder().object(substring).stream(fileInputStream,fileInputStream.available(),-1).contentType("text/html").bucket(bucketName).build();
minioClient.putObject(putObjectArgs);
} catch (Exception e) {
log.error("上传失败");
}
}
}
}
//判断是否存在
//存在,如果是文件,拼接路径直接保存
//如果是文件夹,遍历,递归
}
栈中存储的数据,可以包装成一个递归函数的参数
2023.11.24日上述版本写死了上传文件的类型,最好是根据文件后缀判断文件的性质
指定上传文件的contentType
public void uploadDir(String prefix,String path,String bucketName) {
//指定一个路径
// String path="F:\\BaiduNetdiskDownload\\141黑马头条\\day06_文章定时发布\\页面静态化\\资料\\模板文件\\plugins";
//用栈实现递归
Stack<Data> stack=new Stack<>();
File file=null;
file=new File(path);
Data one=new Data();
one.file=file;
one.path=prefix+"";
stack.push(one);
while(!stack.isEmpty())
{
Data tmp=stack.pop();
file=tmp.file;
String ParentPath=tmp.path;
if(file.exists()) {
String name = file.getName();
if (file.isDirectory())
{
List<File> fileList= Arrays.asList(file.listFiles());
for(File f:fileList)
{
Data data=new Data();
data.file=f;
data.path=ParentPath+"/"+name;
stack.push(data);
}
}
else
{
try {
FileInputStream fileInputStream=new FileInputStream(file);
String minioPath=ParentPath+"/"+file.getName();
String substring=minioPath;
if(minioPath.startsWith("["))
{
substring=minioPath.substring(1,minioPath.length());
}
//指定上传类型
String contentType="text/html";
String suffix=minioPath.substring(minioPath.lastIndexOf(".")+1,minioPath.length());
switch(suffix)
{
case "js":
contentType="text/javascript";
break;
case "css":
contentType="text/css";
break;
}
PutObjectArgs putObjectArgs=PutObjectArgs.builder().object(substring).stream(fileInputStream,fileInputStream.available(),-1).contentType(contentType).bucket(bucketName).build();
minioClient.putObject(putObjectArgs);
} catch (Exception e) {
log.error("上传失败");
}
}
}
}
//判断是否存在
//存在,如果是文件,拼接路径直接保存
//如果是文件夹,遍历,递归
}