开发者社区> 技术小牛人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

FTP-使用ftp4j操作FTP_1

简介:
+关注继续查看

说明:jar包版本ftp4j-1.7.2.jar

一、创建项目
    项目名称:ftpdemo
二、添加jar包
    1.在项目中创建lib目录
        /lib
    2.在lib目录下添加jar包
        ftp4j-1.7.2.jar
        junit-4.4.jar        
三、添加属性文件
    1.在项目中创建conf目录
        /conf
    2.在conf目录添加属性文件
        属性文件名称:ftpinfo.properties
        属性文件内容:
        ftp_server_address=ftp://192.168.3.200:21
        ftp_server_username=teacher
        ftp_server_password=*******
四、创建工具类
    1.在src下创建包
        包名:cn.jbit
    2.在包下创建创建工具类
        1.字符串处理工具类
            类名:StringUtils.java
            类内容:
            public class StringUtils {
            
                public static boolean isEmpty(String dir) {
                    if (null != dir || !"".equals(dir)) {
                        return false;
                    }
                    return true;
                }
            
                public static boolean isEmpty(File[] files) {
                    if (null != files) {
                        return false;
                    }
                    return true;
                }
            
                public static boolean isEmpty(String[] dirs) {
                    if (null != dirs) {
                        return false;
                    }
                    return true;
                }
            }
        2.加载属性文件工具类
            类名:PropUtils.java
            类内容:
                /**
                 * 属性文件工具类
                 * @author dengdashuai
                 *
                 */
                public class PropUtils {
                    private static Properties properties = new Properties();
                    private PropUtils(){}
                    static{
                        try {
                            properties.load(PropUtils.class.getClassLoader().getResourceAsStream("ftpinfo.properties"));
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    
                    public static String getString(String key){
                        return properties.getProperty(key);
                    }
                }
        3.操作FTP工具类
            类名:StringUtils.java
            类内容:
                public class FTPUtils {
                    private static FTPUtils ftp;
                    // FTP服务地址
                    private static String ADDRESS;
                    // FTP登录用户名
                    private static String USERNAME;
                    // FTP登录密码
                    private static String PASSWORD;
                
                    // 无参构造
                    private FTPUtils() {
                    }
                
                    /*
                     * 加载
                     *     ftp地址
                     *     ftp登录名
                     *     ftp登录密码
                     */
                    static {
                        ADDRESS = PropUtils.getString("ftp_server_address");
                        USERNAME = PropUtils.getString("ftp_server_username");
                        PASSWORD = PropUtils.getString("ftp_server_password");
                    }
                
                    /**
                     * 实例化对象
                     * 
                     * @return FTPUtils
                     */
                    public static FTPUtils getInstance() {
                        if (ftp == null) {
                            ftp = new FTPUtils();
                        }
                        return ftp;
                    }
                
                    /*
                     * 获取FTP客户端对象
                     */
                    private FTPClient getClient() throws Exception {
                        // 创建FTP客户端对象
                        FTPClient client = new FTPClient();
                        // 设置编码
                        client.setCharset("utf-8");
                        // 二进制
                        client.setType(FTPClient.TYPE_BINARY);
                        // 创建URL对象
                        URL url = new URL(FTPUtils.ADDRESS);
                        // 获取端口
                        int port = url.getPort() < 1 ? 21 : url.getPort();
                        // 建立连接
                        client.connect(url.getHost(), port);
                        // 登录
                        client.login(FTPUtils.USERNAME, FTPUtils.PASSWORD);
                        // 客户端对象
                        return client;
                    }
                
                    /*
                     * 注销客户端连接 
                     * client:FTP客户端对象
                     */
                    private void logout(FTPClient client) throws Exception {
                        if (client != null) {
                            try {
                                // 有些FTP服务器未实现此功能,若未实现则会出错
                                client.logout(); // 退出登录
                            } catch (FTPException fe) {
                            } catch (Exception e) {
                                throw e;
                            } finally {
                                //判断客户端是否连接,如果已经连接服务返回true,否则返回false
                                if (client.isConnected()) { 
                                    // 断开连接
                                    client.disconnect(true);
                                }
                            }
                        }
                    }
                
                    /*
                     * 判断当前为文件还是目录 
                     * client:FTP客户端对象 dir:目录
                     */
                    private int getFileType(FTPClient client, String dir) throws Exception {
                        FTPFile[] files = null;
                        try {
                            files = client.list(dir);
                        } catch (Exception e) {
                            return -1;
                        }
                        if (files.length > 1) {
                            return FTPFile.TYPE_DIRECTORY;
                        } else if (files.length == 1) {
                            FTPFile f = files[0];
                            if (f.getType() == FTPFile.TYPE_DIRECTORY) {
                                return FTPFile.TYPE_DIRECTORY;
                            }
                            String path = dir + "/" + f.getName();
                            try {
                                int len = client.list(path).length;
                                if (len == 1) {
                                    return FTPFile.TYPE_DIRECTORY;
                                } else {
                                    return FTPFile.TYPE_FILE;
                                }
                            } catch (Exception e) {
                                return FTPFile.TYPE_FILE;
                            }
                        } else {
                            try {
                                client.changeDirectory(dir);
                                client.changeDirectoryUp();
                                return FTPFile.TYPE_DIRECTORY;
                            } catch (Exception e) {
                                return -1;
                            }
                        }
                    }
                
                    /*
                     * 判断文件或目录是否存在 client:FTP客户端对象 dir:目录
                     */
                    private boolean exists(FTPClient client, String dir) throws Exception {
                        return getFileType(client, dir) != -1;
                    }
                
                    /*
                     * 创建目录 client:FTP客户端对象 dir:目录
                     */
                    private void mkdirs(FTPClient client, String dir) throws Exception {
                        if (dir == null) {
                            return;
                        }
                        dir = dir.replace("//", "/");
                        String[] dirs = dir.split("/");
                        for (int i = 0; i < dirs.length; i++) {
                            dir = dirs[i];
                            if (!StringUtils.isEmpty(dir)) {
                                if (!exists(client, dir)) {
                                    client.createDirectory(dir);
                                }
                                client.changeDirectory(dir);
                            }
                        }
                    }
                
                    /*
                     * 获取FTP目录 url:原FTP目录 dir:目录
                     */
                    private URL getURL(URL url, String dir) throws Exception {
                        String path = url.getPath();
                        if (!path.endsWith("/") && !path.endsWith("//")) {
                            path += "/";
                        }
                        dir = dir.replace("//", "/");
                        if (dir.startsWith("/")) {
                            dir = dir.substring(1);
                        }
                        path += dir;
                        return new URL(url, path);
                    }
                
                    /*
                     * 获取FTP目录
                     * dir:目录
                     */
                    private URL getURL(String dir) throws Exception {
                        return getURL(new URL(FTPUtils.ADDRESS), dir);
                    }
                    
                    
                   
                    本文转自  素颜猪  51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1566322

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ftp文件上传下载等系列操作
ftp文件上传下载等系列操作
0 0
【愚公系列】2022年03月 C#帮助类-FTP的花样操作
【愚公系列】2022年03月 C#帮助类-FTP的花样操作
0 0
如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作
Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常IDE,FTP软件中少见的,而且是很耗工作时间的一个操作。
1874 0
Centos Linux系统使用vsftpd搭建ftp服务
Centos Linux系统使用vsftpd搭建ftp服务
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载