edtftpj.jar实现FTP功能

2017-06-19  本文已影响0人  胖胖的半山兄

公司采用edtftpj.jar实现FTP功能,并封装了一部分方法,例如几种上传下载的模式,其他操作还是得自己写。本文主要记录目录相关的三个方法。

  1. 创建目录
    创建目录,有一个条件:目录不存在
    /**
     * Description: 创建目录 <br>
     * 
     * @author xxx<br>
     * @taskId <br>
     * @param ftpIp <br>
     * @param userName <br>
     * @param password <br>
     * @param fileDir <br>
     */
    public void createFtpDir(String ftpIp, String userName, String password, String fileDir) {
        FileTransferClient ftp = new FileTransferClient();
        try {
            ftp.setRemoteHost(ftpIp);
            ftp.setUserName(userName);
            ftp.setPassword(password);
            ftp.connect();
            // 判断目录是否存在
            if (!checkDirExist(ftp, fileDir)) {
                ftp.createDirectory(fileDir);
            }
        }
        catch (Exception e) {
            logger.error(e);
        }
        finally {
            try {
                ftp.disconnect();
            }
            catch (Exception e) {
                logger.error(e);
            }
        }
    }
  1. 删除目录
    删除目录,有两个条件:
    /**
     * Description: 删除目录 <br>
     * 
     * @author xxx<br>
     * @taskId <br>
     * @param ftpIp <br>
     * @param userName <br>
     * @param password <br>
     * @param fileDir <br>
     */
    public void deleteFtpDir(String ftpIp, String userName, String password, String fileDir)  {
        FileTransferClient ftp = new FileTransferClient();
        try {
            ftp.setRemoteHost(ftpIp);
            ftp.setUserName(userName);
            ftp.setPassword(password);
            ftp.connect();
            // 判断目录是否存在
            if (checkDirExist(ftp, fileDir)) {
                ftp.changeDirectory(fileDir);
                // 删除所有文件 再删除目录
                String[] list = ftp.directoryNameList();
                for (int i = 0; i < list.length; i++) {
                    String remoteFileName = list[i];
                    ftp.deleteFile(remoteFileName);
                }
                ftp.deleteDirectory(fileDir);
            }

        }
        catch (Exception e) {
            logger.error(e);
        }
        finally {
            try {
                ftp.disconnect();
            }
            catch (Exception e) {
                logger.error(e);
            }
        }
    }
  1. 检查文件是否存在
    /**
     * Description: 检查文件是否存在<br> 
     *  
     * @author xxx<br>
     * @taskId <br>
     * @param ftp <br>
     * @param fileDir <br>
     * @return <br>
     */ 
    public boolean checkDirExist(FileTransferClient ftp, String fileDir) {
        boolean isExist = false;
        int index = fileDir.lastIndexOf("/");
        String offerCode = fileDir.substring(index + 1);
        String PFileDir = fileDir.substring(0, index + 1);

        FTPFile[] files = null;
        try {
            ftp.changeDirectory(PFileDir);
            files = ftp.directoryList();
        }
        catch (FTPException e) {
            logger.error(e);
        }
        catch (IOException e) {
            logger.error(e);
        }
        catch (ParseException e) {
            logger.error(e);
        }
        for (FTPFile ftpFile : files) {
            if (offerCode.equals(ftpFile.getName())) {
                isExist = true;
                break;
            }
        }
        return isExist;
    }

本文主要意图在于纠正原本代码用 ftp.directoryList(fileDir).length != 0来判断目录是否存在的不严谨


上一篇 下一篇

猜你喜欢

热点阅读