android下使用FTP上传文件、下载文件、新建目录、删除文件工具类
来源:互联网 发布:中高端女装品牌 知乎 编辑:程序博客网 时间:2024/05/29 12:50
说明:
其实安卓中很少用FTP和服务器进行交互,尤其还是文件的上传和下载操作,性能先不说,整个代码逻辑都很尴尬,基本都需要使用原生API进行操作。这里没有进行过多的封装,
只是完成功能而已,毕竟FTP不是安卓网络请求的主流。闲话不多说,上代码。
package com.hisign.util;import android.text.TextUtils;import android.util.Log;import com.hisign.qrcebpro.app.Constant;import com.hisign.qrcebpro.app.MyApplication;import com.hisign.qrcebpro.utils.LogUtil;import com.hisign.qrcebpro.utils.PreferenceUtil;import com.hisign.util.ZipUtils.IResultListener;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import it.sauronsoftware.ftp4j.FTPAbortedException;import it.sauronsoftware.ftp4j.FTPClient;import it.sauronsoftware.ftp4j.FTPDataTransferException;import it.sauronsoftware.ftp4j.FTPDataTransferListener;import it.sauronsoftware.ftp4j.FTPException;import it.sauronsoftware.ftp4j.FTPIllegalReplyException;/** * hongzhen yu create at 2017/7/28 */public class FTPManager { private static FTPManager instance; private FTPManager() { } /** * @return * @throws * @Title: getInstance * @Description: 单例方式提供对象 */ public static FTPManager getInstance() { if (instance == null) { synchronized (FTPManager.class) { if (instance == null) { instance = new FTPManager(); } } } return instance; } public void ftp4jUpload(final String path, final IResultListener listener) { new Thread() { public void run() { try { String targetName = ftp4jUpload(path); if (listener != null) { listener.onSuccess(targetName); } } catch (IllegalStateException | IOException | FTPIllegalReplyException | FTPException | FTPDataTransferException | FTPAbortedException e) { e.printStackTrace(); Log.d("lixm", "ftp4jUpload error : ", e); if (listener != null) { listener.onFilure(e.getMessage()); } } } }.start(); } /** * FTP协议文件上传 * * @param path * @throws FTPException * @throws FTPIllegalReplyException * @throws IOException * @throws IllegalStateException * @throws FTPAbortedException * @throws FTPDataTransferException */ public String ftp4jUpload(String path) throws IllegalStateException, IOException, FTPIllegalReplyException, FTPException, FTPDataTransferException, FTPAbortedException { // 创建客户端 final FTPClient client = new FTPClient(); // 不指定端口,则使用默认端口21 String ip = PreferenceUtil.getNetworkIP(MyApplication.getMyApplication().getApplicationContext()); String rightIP = "192.168.128.52"; if (!TextUtils.isEmpty(ip)) { String[] ipArr = ip.split("\\."); if (ipArr != null && ipArr.length == 4) { rightIP = ip; } } int rightPort = 21; String port = PreferenceUtil.getNetworkPort(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(port)) { rightPort = Integer.valueOf(rightPort); } client.connect(rightIP, rightPort); // 用户登录 String user = PreferenceUtil.getNetworkUser(MyApplication.getMyApplication().getApplicationContext()); String rightUser = "test"; if (!TextUtils.isEmpty(user)) { rightUser = user; } String pwd = PreferenceUtil.getNetworkPwd(MyApplication.getMyApplication().getApplicationContext()); String rightPwd = "test"; if (!TextUtils.isEmpty(pwd)) { rightPwd = pwd; } client.login(rightUser, rightPwd); String rightFilePath = ""; String filePath = PreferenceUtil.getNetworkFtpPath(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(filePath)) { rightFilePath = "/" + filePath + "/"; client.changeDirectory(rightFilePath+PreferenceUtil.getUserCode(MyApplication.getMyApplication())+"/"); } File file = new File(path); client.upload(file); client.rename(srcName, targetName); return targetName; } //从ftp服务器下载文件 public void ftpDownLoad( final FTPDataTransferListener listener) { new Thread(new Runnable() { @Override public void run() { // 创建客户端 final FTPClient client = new FTPClient(); //不指定IP的话,默认IP String ip = PreferenceUtil.getNetworkIP(MyApplication.getMyApplication().getApplicationContext()); String rightIP = "192.168.128.52"; if (!TextUtils.isEmpty(ip)) { String[] ipArr = ip.split("\\."); if (ipArr != null && ipArr.length == 4) { rightIP = ip; } } // 不指定端口,则使用默认端口21 int rightPort = 21; String port = PreferenceUtil.getNetworkPort(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(port)) { rightPort = Integer.valueOf(rightPort); } try { client.connect(rightIP, rightPort); // 用户登录 String user = PreferenceUtil.getNetworkUser(MyApplication.getMyApplication().getApplicationContext()); String rightUser = "test"; if (!TextUtils.isEmpty(user)) { rightUser = user; } String pwd = PreferenceUtil.getNetworkPwd(MyApplication.getMyApplication().getApplicationContext()); String rightPwd = "test"; if (!TextUtils.isEmpty(pwd)) { rightPwd = pwd; } client.login(rightUser, rightPwd); String pathFTP = "/" + "ZIP"+"/"; String filePath = PreferenceUtil.getNetworkFtpPath(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(filePath)) { pathFTP = filePath + "/"; } client.changeDirectory(pathFTP+PreferenceUtil.getUserCode(MyApplication.getMyApplication())+"/result"); String[] strings = client.listNames(); for (int i = 0; i < strings.length; i++) { Log.i("listfile", strings[i]); String name = strings[i]; Log.i("file", name); File file = new File(Constant.RESUIT_PATH + name); // 输出流 OutputStream outputStream = new FileOutputStream(file); client.download(name, outputStream, 0, listener); outputStream.close(); client.logout(); } } catch (Exception e) { } } }).start(); } /** * 在ftp服务器上创建指定目录 * @param */ public void ftpMakeUserDir() { new Thread(new Runnable() { @Override public void run() { // 创建客户端 final FTPClient client = new FTPClient(); // 不指定端口,则使用默认端口21 String rightIP = "192.168.128.52"; String ip = PreferenceUtil.getNetworkIP(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(ip)) { String[] ipArr = ip.split("\\."); if (ipArr != null && ipArr.length == 4) { rightIP = ip; } } int rightPort = 21; String port = PreferenceUtil.getNetworkPort(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(port)) { rightPort = Integer.valueOf(rightPort); } try { client.connect(rightIP, rightPort);//连接ftp服务器 //配置用户名 String user = PreferenceUtil.getNetworkUser(MyApplication.getMyApplication().getApplicationContext()); String rightUser = "test"; if (!TextUtils.isEmpty(user)) { rightUser = user; } //配置密码 String pwd = PreferenceUtil.getNetworkPwd(MyApplication.getMyApplication().getApplicationContext()); String rightPwd = "test"; if (!TextUtils.isEmpty(pwd)) { rightPwd = pwd; } client.login(rightUser, rightPwd);//登录到ftp //配置ftp服务器根目录 String pathFTP = "/" + "ZIP"+"/"; String filePath = PreferenceUtil.getNetworkFtpPath(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(filePath)) { pathFTP = filePath + "/"; } client.changeDirectory(pathFTP); //创建用户目录 String userCode = PreferenceUtil.getUserCode(MyApplication.getMyApplication()); if (!isDirExist(client, userCode)) { client.createDirectory(userCode); LogUtil.logI("创建目录成功"); } LogUtil.logI("存在"); client.logout(); } catch (IOException e) { e.printStackTrace(); } catch (FTPIllegalReplyException e) { e.printStackTrace(); } catch (FTPException e) { e.printStackTrace(); } } }).start(); } public void ftpMakeResultDir() { new Thread(new Runnable() { @Override public void run() { // 创建客户端 final FTPClient client = new FTPClient(); // 不指定端口,则使用默认端口21 String rightIP = "192.168.128.52"; String ip = PreferenceUtil.getNetworkIP(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(ip)) { String[] ipArr = ip.split("\\."); if (ipArr != null && ipArr.length == 4) { rightIP = ip; } } int rightPort = 21; String port = PreferenceUtil.getNetworkPort(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(port)) { rightPort = Integer.valueOf(rightPort); } try { client.connect(rightIP, rightPort);//连接ftp服务器 //配置用户名 String user = PreferenceUtil.getNetworkUser(MyApplication.getMyApplication().getApplicationContext()); String rightUser = "test"; if (!TextUtils.isEmpty(user)) { rightUser = user; } //配置密码 String pwd = PreferenceUtil.getNetworkPwd(MyApplication.getMyApplication().getApplicationContext()); String rightPwd = "test"; if (!TextUtils.isEmpty(pwd)) { rightPwd = pwd; } client.login(rightUser, rightPwd);//登录到ftp //配置ftp服务器根目录 String pathFTP = "/" + "ZIP"+"/"; String filePath = PreferenceUtil.getNetworkFtpPath(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(filePath)) { pathFTP = filePath + "/"; } //创建用户目录 String userCode = PreferenceUtil.getUserCode(MyApplication.getMyApplication()); String usrPath=pathFTP+userCode+"/"; client.changeDirectory(usrPath); //创建用户目录下的result目录 if (!isDirExist(client, "result")) { client.createDirectory("result"); LogUtil.logI("resultPath创建目录成功"); } LogUtil.logI("result存在"); client.logout(); } catch (IOException e) { e.printStackTrace(); } catch (FTPIllegalReplyException e) { e.printStackTrace(); } catch (FTPException e) { e.printStackTrace(); } } }).start(); } /** 判断Ftp目录是否存在 ,没有原生判断目录是否存在的方法*/ public boolean isDirExist(FTPClient ftpClient, String dir) { try { ftpClient.changeDirectory(dir); } catch (FTPException e) { return false; } catch (IOException e) { return false; } catch (FTPIllegalReplyException e) { return false; } return true; } /** * 删除ftp服务器指定文件 * @param dirName */ private void ftpDeleteFile(final String dir, final String dirName) { new Thread(new Runnable() { @Override public void run() { // 创建客户端 final FTPClient client = new FTPClient(); // 不指定端口,则使用默认端口21 String rightIP = "192.168.128.52"; String ip = PreferenceUtil.getNetworkIP(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(ip)) { String[] ipArr = ip.split("\\."); if (ipArr != null && ipArr.length == 4) { rightIP = ip; } } int rightPort = 21; String port = PreferenceUtil.getNetworkPort(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(port)) { rightPort = Integer.valueOf(rightPort); } try { client.connect(rightIP, rightPort); //配置用户名 String user = PreferenceUtil.getNetworkUser(MyApplication.getMyApplication().getApplicationContext()); String rightUser = "test"; if (!TextUtils.isEmpty(user)) { rightUser = user; } //配置密码 String pwd = PreferenceUtil.getNetworkPwd(MyApplication.getMyApplication().getApplicationContext()); String rightPwd = "test"; if (!TextUtils.isEmpty(pwd)) { rightPwd = pwd; } client.login(rightUser, rightPwd);//登录到ftp //配置ftp服务器根目录 String pathFTP = "/" + "ZIP"+"/"; String filePath = PreferenceUtil.getNetworkFtpPath(MyApplication.getMyApplication().getApplicationContext()); if (!TextUtils.isEmpty(filePath)) { pathFTP = filePath + "/"; } //创建用户目录 String userCode = PreferenceUtil.getUserCode(MyApplication.getMyApplication()); String resultPath=pathFTP+userCode+"/"+"result/"; client.changeDirectory(resultPath); client.deleteFile(dirName); client.logout(); } catch (IOException e) { e.printStackTrace(); } catch (FTPIllegalReplyException e) { e.printStackTrace(); } catch (FTPException e) { e.printStackTrace(); } } }).start(); }}
阅读全文
0 0
- android下使用FTP上传文件、下载文件、新建目录、删除文件工具类
- ftp上传文件下载文件工具类
- ftp操作类,ftp上传,下载,创建目录,检查文件存在,删除文件
- php操作ftp上传文件、创建目录、删除文件、删除目录、下载文件到本地
- php操作ftp上传文件、创建目录、删除文件、删除目录、下载文件到本地
- net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表...
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表
- C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表...
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表...
- .Net 对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)
- .Net 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)
- java上传、下载、删除ftp文件
- FTP连接,上传,下载,删除文件方法
- java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
- FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
- ftp上传文件工具类
- 自动装箱与拆箱的等于比较
- FARROW 滤波器
- struts2基本流程和action的对应
- 在把jQuery的ajax例子放在AppServ上运行时出错,failed to open stream: No such file or directory in Unknown on line 0
- Leetcode-Combination Sum ll(深搜)
- android下使用FTP上传文件、下载文件、新建目录、删除文件工具类
- Android Framework------之Keyguard 简单分析
- 办公技巧:PDF转DWG格式的两种简单方法
- java关键字之static妙用
- ios 数字加字母正则表达式
- 如何轻松的破解excel 2016工作表密码
- Sqlserver触发器(同步、自动)
- 如何提高Unity Gear VR游戏性能
- CSU