美文网首页
edtftpj.jar实现FTP功能

edtftpj.jar实现FTP功能

作者: 胖胖的半山兄 | 来源:发表于2017-06-19 13:46 被阅读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来判断目录是否存在的不严谨


    相关文章

      网友评论

          本文标题:edtftpj.jar实现FTP功能

          本文链接:https://www.haomeiwen.com/subject/bppgqxtx.html