minio上传文件夹java实现

用栈实现递归

  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("上传失败");
                  }
              }
          }
      }
      //判断是否存在
          //存在,如果是文件,拼接路径直接保存
          //如果是文件夹,遍历,递归
  }

栈中存储的数据,可以包装成一个递归函数的参数

你可能感兴趣的:(java,服务器,数据库)