欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝宝贝展示图片大小 编辑:程序博客网 时间:2024/06/05 23:40

/**
*

Title:FTPUtils


*

Description: ftp上传下载工具类;


*

Company:


* @author wangmin
* @since 2017年8月14日-下午10:22:18
* @version V1.0
*/
public class FTPUtils {
/** * 方法描述:向ftp服务器上传文件; * @param host         FTP服务器hostname * @param port         FTP服务器端口 * @param username     FTP服务器登录账号 * @param password     FTP服务器登录密码 * @param basePath     FTP服务器基础目录 * @param filePath     FTP服务器文件存放路径,例如分日期存放:/2015/01/01。文件的路径为basePath+filePath * @param filename     上传到FTP服务器的文件名称 * @param is           输入流 * @return             成功返回true,失败返回false */public static boolean uploadFile(String host, int port, String username, String password, String basePath,        String filePath, String filename, InputStream is){    boolean result = false;    FTPClient ftp = new FTPClient();    try {        int reply;        /**连接ftp服务器,如果采用默认的端口,直接使用ftp.connect(host)连接就可以了*/        ftp.connect(host, port);        /**登录*/        ftp.login(username, password);        reply = ftp.getReplyCode();        if(!FTPReply.isPositiveCompletion(reply)){            ftp.disconnect();            return result;        }        /**切换到上传目录*/        if(!ftp.changeWorkingDirectory(basePath + filePath)){            /**如果目录不存在就创建目录*/            String[] dirs = filePath.split("/");            String tempPath = basePath;            for (String dir : dirs) {                if (null == dir || "".equals(dir)) {                    continue;                }                tempPath += "/" + dir;                if (!ftp.changeWorkingDirectory(tempPath)) {                    if (!ftp.makeDirectory(tempPath)) {                        return result;                    } else {                        ftp.changeWorkingDirectory(tempPath);                    }                }            }        }        /**将上传文件的类型设置成二进制文件类型*/        ftp.setFileType(FTP.BINARY_FILE_TYPE);        /**上传文件*/        if (ftp.storeFile(filename, is)) {            return result;        }        /**上传完毕,关闭输入流*/        is.close();        /**注销ftp*/        ftp.logout();        result = true;    } catch (Exception e) {        e.printStackTrace();    } finally {        if(ftp.isConnected()){            try {                ftp.disconnect();            } catch (IOException e) {                e.printStackTrace();            }        }    }    return result;}/** * 方法描述:从ftp服务器上下载文件; * @param host           FTP服务器hostname * @param port           FTP服务器端口 * @param username       FTP服务器登录账号 * @param password       FTP服务器登录密码 * @param remotePath     FTP服务器上的相对路径 * @param fileName       要下载的文件名 * @param localPath      下载后保存到本地的路径 * @return */public static boolean downloadFile(String host, int port, String username, String password, String remotePath,        String fileName, String localPath){    boolean result = false;    FTPClient ftp = new FTPClient();    try {        int reply;        /**连接FTP服务器,如果使用默认的端口,就直接调用ftp.connect(host)方法连接就可以了*/        ftp.connect(host, port);        /**登录*/        ftp.login(username, password);        reply = ftp.getReplyCode();        if (!FTPReply.isPositiveCompletion(reply)) {            ftp.disconnect();            return result;        }        /**转移到FTP服务器目录*/        ftp.changeWorkingDirectory(remotePath);        FTPFile[] fs = ftp.listFiles();        for (FTPFile file : fs) {            if (file.getName().equals(fileName)) {                File localFile = new File(localPath + "/" + file.getName());                OutputStream os = new FileOutputStream(localFile);                ftp.retrieveFile(file.getName(), os);                os.close();            }        }        ftp.logout();        result = true;    } catch (Exception e) {        e.printStackTrace();    } finally {        if (ftp.isConnected()) {            try {                ftp.disconnect();            } catch (IOException e) {                e.printStackTrace();            }        }    }    return result;}

}