自制萝卜FTP工具

最近公司由于业务需要将公司生成文件上传至服务器,然后由银行下载;用BAT脚本完成了任务,但是赶脚java学了这么久也应该拿点东西出来,所以有了这款萝卜FTP工具,还没有完成,只完成了其中FTP功能部分,还想自己用swing写个界面,界面功能大致:定时执行任务,FTP集成上传下载。今天萝卜FTP工具部分代码贴出,还在完善中。。。

package org.yangxin;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPRadish {

  private FTPClient ftpClient;
  private int controlKeepAliveReplyTimeout = -1;//等待应答时间
  private long keepAliveTimeout = -1;//等待发送,超时时间
  private boolean hidden = false;//是否显示服务器隐藏文件
  private String msg = "ok";
  
  private FTPRadish() {}
  
  private FTPRadish(FTPClient ftp) {
    ftpClient = ftp;
  }
  
  static public FTPRadish me() {
    FTPRadish radish = new FTPRadish(new FTPClient());
    return radish;
  }
  
  public boolean connection(String server, int port) {
    setMsg("");
    if (keepAliveTimeout >= 0) {
      ftpClient.setControlKeepAliveTimeout(keepAliveTimeout);
    }
    if (controlKeepAliveReplyTimeout >= 0) {
      ftpClient.setControlKeepAliveReplyTimeout(controlKeepAliveReplyTimeout);
    }
    try {
      ftpClient.connect(server, port);
      if (isReplyV(ftpClient.getReplyCode())) {
        setMsg("用户名或密码错误!");
        disconnect();
        return false;
      }
//      ftpClient.setListHiddenFiles(isHidden());
    } catch (IOException e) {
      disconnect();
      setMsg("连接服务器:" + server + "的端口:" + port + "失败!");
      return false;
    } 
    
    return true;
  }
  
  public boolean login(String user, String pwd) {
    setMsg("");
    
    boolean ok = true;
    try {
      ok = ftpClient.login(user, pwd);
      if (isReplyV(ftpClient.getReplyCode())) {
        setMsg("用户名或密码错误!!");
        disconnect();
        return false;
      }
    } catch (IOException e) {
      setMsg("登录失败!");
      disconnect();
      return false;
    }
    
    return ok;
  }
  
  public boolean upload(String locFile, String remoteFile) {
    setMsg("");
    
    ftpClient.enterLocalPassiveMode();
    InputStream in =  null;
    try {
      ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
      in  = new FileInputStream(new File(locFile));
      
      ftpClient.storeFile(remoteFile, in);
      setMsg("上传" + locFile + "成功!");
    } catch (IOException e) {
      setMsg("上传" + locFile + "失败!");
      return false;
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (IOException e) {
        }
      }
    }
    return true;
  }
  
  public boolean isReplyV(int reply) {
    return !FTPReply.isPositiveCompletion(reply);
  }
  
  public void disconnect() {
    try {
      if (ftpClient.isAvailable()) {
        ftpClient.logout();
        setMsg("已退出登录");
      }
      
      if (ftpClient.isConnected()) {
        ftpClient.disconnect();
        setMsg("已断开连接");
      }
    } catch (IOException e) {
    } 
  }
  
  public int getControlKeepAliveReplyTimeout() {
    return controlKeepAliveReplyTimeout;
  }

  public void setControlKeepAliveReplyTimeout(int controlKeepAliveReplyTimeout) {
    this.controlKeepAliveReplyTimeout = controlKeepAliveReplyTimeout;
  }

  public long getKeepAliveTimeout() {
    return keepAliveTimeout;
  }

  public void setKeepAliveTimeout(long keepAliveTimeout) {
    this.keepAliveTimeout = keepAliveTimeout;
  }

  public boolean isHidden() {
    return hidden;
  }

  public void setHidden(boolean hidden) {
    this.hidden = hidden;
  }
  
  public String getMsg() {
    return msg;
  }
  
  public void setMsg(String msg) {
    this.msg = msg;
  }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值