android ftp服务的实现- sauronsoftware ftp4j

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')
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: it.sauronsoftware是一个软件开发公司,主要提供Java开发工具和库。 这个公司开发了许多优秀的Java工具,帮助开发人员更高效地进行开发。其中最知名的产品之一就是Jave开发工具包(Java Development Kit,简称JDK)。 JDK是Java开发的核心工具,提供了Java编译器、虚拟机和一系列的类库,可以帮助开发人员进行Java程序的编译、运行和调试。JDK的稳定性和功能丰富使得它成为了Java开发人员不可或缺的工具。 除了JDK,it.sauronsoftware还开发了其他一些不错的Java库,比如SocketPro和CoolHttp等。这些库提供了各种网络编程和HTTP请求相关的功能,方便开发人员进行网络应用的开发。 it.sauronsoftware公司不仅专注于提供Java开发工具和库,还关注于提供高质量的技术支持和服务。他们的产品广泛应用于各类企业和开发团队,帮助他们提高开发效率,缩短开发周期。 总之,it.sauronsoftware是一家专注于Java开发工具和库的软件开发公司,他们的产品和服务为开发人员提供了便利和支持,推动了Java开发的发展。 ### 回答2: it.sauronsoftware是一个开发和提供各种软件解决方案的技术公司。该公司成立于2003年,总部位于法国巴黎。it.sauronsoftware注重软件工程和开发,并专注于提供高质量、灵活可靠的解决方案。 it.sauronsoftware的产品包括多个领域的软件工具和库,涵盖了开发者所需的各种功能和工具。比如,它提供了Java开发工具包(Java Development Kit),可以帮助开发者创建、编译和运行Java应用程序。此外,他们还提供了一些与网络和服务器相关的软件解决方案,如网络爬虫(web crawler)和HTTP服务器。 it.sauronsoftware注重产品的质量和性能,致力于提供高效、稳定且可靠的解决方案。他们的软件工具和库经过了广泛的测试和优化,以确保它们能够在各种环境下正常运行,并且能够满足不同开发者的需求。 除了产品开发,it.sauronsoftware还非常关注客户的需求和反馈。他们提供了全面的技术支持,包括文档、示例代码和在线论坛。他们积极倾听用户的反馈和建议,以不断优化和改进他们的产品,以更好地满足客户的需求。 总而言之,it.sauronsoftware是一家专注于软件解决方案开发的技术公司。他们提供多领域的软件工具和库,并致力于提供高质量、灵活可靠的解决方案。通过持续改进和客户反馈,他们在软件开发领域保持着良好的口碑和信誉。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值