SFTP中创建文件目录,上传文件(*)

/**
  * sftp连接
  */
public void connect(String username, String host, int port, String password) {
  try {
   if (sftp != null) {
    log.info("sftp is not null");
   }
   JSch jsch = new JSch();
   jsch.getSession(username, host, port);
   Session sshSession = jsch.getSession(username, host, port);
   log.info("Session created.");
   sshSession.setPassword(password);
   Properties sshConfig = new Properties();
   sshConfig.put("StrictHostKeyChecking", "no");
   sshSession.setConfig(sshConfig);
   sshSession.connect();
   log.info("Session connected.");
   log.info("Opening Channel.");
   Channel channel = sshSession.openChannel("sftp");
   channel.connect();
   sftp = (ChannelSftp) channel;
   log.info("Connected to " + host + ".");
  } catch (Exception e) {
   throw new SystemException("连接:["+host+"]ftp服务器异常");
  }
 }
 
/**
  * sftp断开连接
  */
 public void disconnect() {
  if (this.sftp != null) {
   if (this.sftp.isConnected()) {
    this.sftp.disconnect();
   } else if (this.sftp.isClosed()) {
    System.out.println("sftp is closed already");
   }
  }
 }
 
/**
  * 上传文件 流 本地文件路径 remotePath 服务器路径
  */
 public void upload(File file, String remotName, String remotePath) {
  try {
   // File file = new File(localPath);
   if (file.isFile()) {
    // System.out.println("localFile : " + file.getAbsolutePath());
    String rpath = remotePath; // 服务器需要创建的路径
    try {
     createDir(rpath, sftp);
    } catch (Exception e) {
     throw new SystemException("创建路径失败:" + rpath);
    }
    // this.sftp.rm(file.getName());
    sftp.cd(remotePath);
    this.sftp.put(new FileInputStream(file), remotName);
   }
  } catch (FileNotFoundException e) {
   throw new SystemException("上传文件没有找到");
  } catch (SftpException e) {
   throw new SystemException("上传ftp服务器错误");
  }
 }
/**
  * 创建一个文件目录
  */
 public void createDir(String createpath, ChannelSftp sftp) {
  try {
   if (isDirExist(createpath)) {
    this.sftp.cd(createpath);
   }
   String pathArry[] = createpath.split("/");
   StringBuffer filePath = new StringBuffer("/");
   for (String path : pathArry) {
    if (path.equals("")) {
     continue;
    }
    filePath.append(path + "/");
    if (isDirExist(filePath.toString())) {
     sftp.cd(filePath.toString());
    } else {
     // 建立目录
     sftp.mkdir(filePath.toString());
     // 进入并设置为当前目录
     sftp.cd(filePath.toString());
    }
   }
   this.sftp.cd(createpath);
  } catch (SftpException e) {
   throw new SystemException("创建路径错误:" + createpath);
  }
 }
/**
  * 判断目录是否存在
  */
 public boolean isDirExist(String directory) {
  boolean isDirExistFlag = false;
  try {
   SftpATTRS sftpATTRS = sftp.lstat(directory);
   isDirExistFlag = true;
   return sftpATTRS.isDir();
  } catch (Exception e) {
   if (e.getMessage().toLowerCase().equals("no such file")) {
    isDirExistFlag = false;
   }
  }
  return isDirExistFlag;
 }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值