萝卜FTP工具续

来源:互联网 发布:淘宝能买到烟吗 编辑:程序博客网 时间:2024/04/30 03:23

1,已经完成萝卜FTP工具基本上传下载和查看远程文件功能

2,增加工具集swing界面

3,集成quartz,提供定时任务

4,计划增加完成任务短信提醒功能;数据库表导出文件功能


预:接下来文章准备继续探讨junit,主要探讨junitcore这个类

package org.yangxin;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPClientConfig;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;/** * @author 杨欣 * 萝卜FTP工具包 */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;  }    /**   * @param server ftp服务器地址   * @param port   ftp端口   * @return   * 连接ftp服务器   */  public boolean connection(String server, int port) {    ftpClient.setListHiddenFiles(isHidden());    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;      }    } catch (IOException e) {      disconnect();      setMsg("连接服务器:" + server + "的端口:" + port + "失败!");      return false;    }     setMsg("已建立与" + server + ",端口" + port + "的连接!");    return true;  }    /**   * @param user 用户名   * @param pwd  密码   * @return   * 登录   */  public boolean login(String user, String pwd) {    boolean ok = true;    try {      ok = ftpClient.login(user, pwd);      if (isReplyV(ftpClient.getReplyCode())) {        setMsg("用户名或密码错误!!");        disconnect();        return false;      }      ftpClient.enterLocalPassiveMode();    } catch (IOException e) {      setMsg("登录失败!");      disconnect();      return false;    }    setMsg("登录成功!");    return ok;  }  /**   * @param charset 字符集   * @param lang    服务器语言环境   */  public void ftpConf(String charset, String lang) {    ftpClient.setControlEncoding(charset);    FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);      conf.setServerLanguageCode(lang);  }  /**   * @param locFile   * @param remoteFile   * @return   */  public boolean upload(String locFile, String remoteFile) {    InputStream in =  null;    try {      ftpClient.setFileType(FTP.BINARY_FILE_TYPE);      in  = new FileInputStream(new File(locFile));            ftpClient.storeFile(remoteFile, in);      setMsg("上传" + locFile + "成功!");    }catch (FileNotFoundException e) {      setMsg("文件" + locFile + "不存在!");      return false;    } catch (IOException e) {      setMsg("上传" + locFile + "失败!");      return false;    } finally {      if (in != null) {        try {          in.close();        } catch (IOException e) {        }      }    }    return true;  }  /**   * @param remoteFile 远程文件   * @param locFile    本地文件   * @return   * 下载文件   */  public boolean down(String remoteFile, String locFile) {    OutputStream out = null;    try {      out = new FileOutputStream(locFile);      ftpClient.retrieveFile(remoteFile, out);      setMsg("下载文件" + locFile +"成功!");    } catch (IOException e) {      setMsg("下载失败!");      return false;    }        return true;  }  /**   * @return   * 获取默认当前目录文件列表   */  public List<String> getList() {    List<String> dir = new ArrayList<String>();    try {      FTPFile[] ftpfs = ftpClient.listFiles();      for (FTPFile ff : ftpfs) {        dir.add(ff.getName());      }    } catch (IOException e) {      setMsg("读取远程服务器文件目录失败!");      return null;    }    setMsg("获取远程服务器文件目录成功!");    return dir;  }  /**   * @param reply 服务器返回状态码   * @return   */  public boolean isReplyV(int reply) {    return !FTPReply.isPositiveCompletion(reply);  }  /**   * @param dir    * 改变当前工作目录   */  public void changeWorkingDirectory(String dir) {    try {      ftpClient.changeWorkingDirectory(dir);      setMsg("当前工作目录:" + dir);    } catch (IOException e) {      setMsg("切换工作目录" + dir + "异常!");    }  }  public boolean isLogin() {    return ftpClient.isAvailable();  }    public boolean isConn() {    return ftpClient.isConnected();  }    public void disconnect() {    try {      if (isLogin()) {        ftpClient.logout();        setMsg("已退出登录");      }            if (isConn()) {        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
原创粉丝点击