sauronsoftware ftp4j 的android 端实现

ftp4j 介绍

ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能。
ftp4j 官网: http://www.sauronsoftware.it/projects/ftp4j/
The ftp4j library implements a Java full-features FTP client. With ftp4j embedded in your application you can: transfer files (upload and download), browse the remote FTP site (directory listing included), create, delete, rename and move remote directories and files.

Android实现demo

import android.os.Environment;

import java.io.File;

import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferListener;

public class FtpClienManager {

    private FTPClient client;

    private Thread mThread;

    public void ftpConnet(final IConnectListener listener) {
        mThread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    client = new FTPClient();
                    String host = "192.168.0.101";
                    client.connect(host, 8088);
                    client.login("admin", "admin");
                    if(listener != null){
                        listener.onConnected(true);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    if(listener != null){
                        listener.onConnected(false);
                    }
                }
            }
        });
        mThread.start();
    }

    public void ftpClose() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    if (client != null)
                        client.disconnect(false);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    /***下载文件***/
    public void download(final String url,FTPDataTransferListener listener) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    if (client != null) {
                        
                        
                        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/ftp");
                        if (!file.exists()) {
                            file.mkdirs();
                        }
                        File file1 = new File(file, "11.jpg");
                        client.download(url, file1, new FTPDataTransferListener() {
                            @Override
                            public void started() {
                                LogUtils.d("-----------------started");
                            }

                            @Override
                            public void transferred(int i) {
                                //                   LogUtils.d("-----------------transferred");
                            }

                            @Override
                            public void completed() {
                                LogUtils.d("-----------------completed");
                            }

                            @Override
                            public void aborted() {
                                LogUtils.d("-----------------aborted");
                            }

                            @Override
                            public void failed() {
                                LogUtils.d("-----------------failed");
                            }
                        });
                    } else {
                        LogUtils.d("-----------------client=null");
//                ftpConnet();
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    /***上傳文件***/
    public void upload(final String pathName, final FTPDataTransferListener listener) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    if (client != null) {
                        File file = new File(pathName);
                        if (!file.exists()) {
                            file.mkdirs();
                        }
                       
                        try {
                            client.createDirectory("update");
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                        client.changeDirectory("update");
                        client.upload(file, listener);
                        client.changeDirectory("/");
                    } else {
                        LogUtils.e("-----------------client=null");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }


    public interface IConnectListener{
        void onConnected(boolean isConnect);
    }


}

import it.sauronsoftware.ftp4j.FTPDataTransferListener;

public class MainActivity extends AppCompatActivity {

    private FtpClienManager mFtpClienManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mFtpClienManager = new FtpClienManager();
        mFtpClienManager.ftpConnet(new FtpClienManager.IConnectListener() {
            @Override
            public void onConnected(boolean isConnect) {
                if (isConnect) {
                    upload();
                }
            }
        });

    }

    private void upload() {
        mFtpClienManager.upload("/mnt/sdcard/update.zip", new FTPDataTransferListener() {
            @Override
            public void started() {
                LogUtils.e("-----------------started");
            }

            @Override
            public void transferred(int i) {
                //                   LogUtils.d("-----------------transferred");
            }

            @Override
            public void completed() {
                LogUtils.e("-----------------completed");
            }

            @Override
            public void aborted() {
                LogUtils.e("-----------------aborted");
            }

            @Override
            public void failed() {
                LogUtils.e("-----------------failed");
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();

    }

    @Override
    protected void onStop() {
        super.onStop();
        mFtpClienManager.ftpClose();
    }

}

总结

FTP客户端的简单演示
使用时需要导入ftp4j

build.gradle

dependencies {
    compile files('libs/ftp4j-1.7.2.jar')
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐