JAVA FTP工具类

public class FTPUtils {
  private static final Logger log = Logger.getLogger(FTPUtils.class);
  private FTPUtils() {
      
  }
  public static boolean upload(String hostname, int port, String username, String password, String workingPath, InputStream inputStream, String saveName) {
      boolean flag = false;
      FTPClient ftpClient = new FTPClient();
      //1 测试连接
      if(connect(ftpClient, hostname, port, username, password)) {
          try {
            //2 检查工作目录是否存在
              if(ftpClient.changeWorkingDirectory(workingPath)) {
                // 3 检查是否上传成功
                  if(storeFile(ftpClient, saveName, inputStream)) {
                      flag = true;
                      disconnect(ftpClient);
                  }
              }
          }catch (Exception e) {
            // TODO: handle exception
        }
      }
      
      return flag;
  }
  /**
   * 断开链接
   * @param ftpClient
   */
  public static void disconnect(FTPClient ftpClient) {
      if(ftpClient.isConnected()) {
          try {
              ftpClient.disconnect();
              log.info("ftp已关闭连接");
          }catch (Exception e) {
            log.error("ftp没有关闭连接");
            e.printStackTrace();
        }
      }
  }
 
  public static boolean connect(FTPClient ftpClient, String hostname, int port, String username, String password) {
      boolean flag = false;
      try {
          ftpClient.connect(hostname, port);
          ftpClient.enterLocalPassiveMode();
          ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
          ftpClient.setControlEncoding("UTF-8");
          if(ftpClient.login(username, password)) {
              log.info("连接ftp成功");
              flag = true;
          }else {
              log.error("连接ftp失败,可能用户名或密码错误");
              try {
                  disconnect(ftpClient);
              }catch (Exception e) {
                e.printStackTrace();
            }
              
          }
    } catch (IOException e) {
        log.error("ftp连接失败,可能ip或端口错误");
        e.printStackTrace();
    }
      return flag;
  }
  public static boolean storeFile(FTPClient ftpClient, String saveName, InputStream fileInputStream) {
      boolean flag = false;
      try {
          if(ftpClient.storeFile(saveName, fileInputStream)) {
              flag = true;
              log.info("上传成功");
              disconnect(ftpClient);
          }
      }catch (Exception e) {
        log.error("上传失败");
        disconnect(ftpClient);
        e.printStackTrace();
    }
      return flag;
  }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值