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

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); 
    return;
   }
   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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值