天天看点

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) {

                public static boolean isEmpty(String[] dirs) {

                    if (null != dirs) {

            }

        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工具类

                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;

                            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();

                                int len = client.list(path).length;

                                if (len == 1) {

                                    return FTPFile.TYPE_DIRECTORY;

                                } else {

                                    return FTPFile.TYPE_FILE;

                                return FTPFile.TYPE_FILE;

                        } else {

                                client.changeDirectory(dir);

                                client.changeDirectoryUp();

                                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);

                     * 获取FTP目录 url:原FTP目录 dir:目录

                    private URL getURL(URL url, String dir) throws Exception {

                        String path = url.getPath();

                        if (!path.endsWith("/") && !path.endsWith("//")) {

                            path += "/";

                        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