安卓ftp客户端的使用
本文是ftp上傳文件的工具類,非原創(chuàng)
package com.myweather.tools;
import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import java.io.InputStream;
/**
?* 通過FTP上傳文件
?*
?* @Author lvhaibao
?* @Date 2018/2/11 21:43
?*/
public class FTPTools {
? ? //用于打印日志
? ? //private static final Logger log = Logger.getLogger(FTPUtils.class);
? ? //設(shè)置私有不能實例化
? ? private FTPTools() {
? ? }
? ? /**
? ? ?* 上傳
? ? ?*
? ? ?* @param hostname ip或域名地址
? ? ?* @param port ?端口
? ? ?* @param username 用戶名
? ? ?* @param password 密碼
? ? ?* @param workingPath 服務(wù)器的工作目
? ? ?* @param inputStream 要上傳文件的輸入流
? ? ?* @param saveName ? ?設(shè)置上傳之后的文件名
? ? ?* @return
? ? ?*/
? ? public static boolean upload(String hostname, int port, String username, String password, String workingPath, InputStream inputStream, String saveName) {
? ? ? ? boolean flag = false;
? ? ? ? FTPClient ftpClient = new FTPClient();
? ? ? ? //1 測試連接
? ? ? ? if (connect(ftpClient, hostname, port, username, password)) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? //2 檢查工作目錄是否存在
? ? ? ? ? ? ? ? if (ftpClient.changeWorkingDirectory(workingPath)) {
? ? ? ? ? ? ? ? ? ? // 3 檢查是否上傳成功
? ? ? ? ? ? ? ? ? ? ftpClient.enterLocalActiveMode(); ? ?//主動模式
? ? ? ? ? ? ? ? ? ? //ftpClient.enterLocalPassiveMode(); 被動模式
? ? ? ? ? ? ? ? ? ? if (storeFile(ftpClient, saveName, inputStream)) {
? ? ? ? ? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? ? ? ? ? ? ? disconnect(ftpClient);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? //log.error("工作目錄不存在");
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? disconnect(ftpClient);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return flag;
? ? }
? ? /**
? ? ?* 斷開連接
? ? ?*
? ? ?* @param ftpClient
? ? ?* @throws Exception
? ? ?*/
? ? public static void disconnect(FTPClient ftpClient) {
? ? ? ? if (ftpClient.isConnected()) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ftpClient.disconnect();
? ? ? ? ? ? ? ? //log.error("已關(guān)閉連接");
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? //log.error("沒有關(guān)閉連接");
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? /**
? ? ?* 測試是否能連接
? ? ?*
? ? ?* @param ftpClient
? ? ?* @param hostname ?ip或域名地址
? ? ?* @param port ? ? ?端口
? ? ?* @param username ?用戶名
? ? ?* @param password ?密碼
? ? ?* @return 返回真則能連接
? ? ?*/
? ? public static boolean connect(FTPClient ftpClient, String hostname, int port, String username, String password) {
? ? ? ? boolean flag = false;
? ? ? ? try {
? ? ? ? ? ? //ftp初始化的一些參數(shù)
? ? ? ? ? ? ftpClient.connect(hostname, port);
? ? ? ? ? ? ftpClient.enterLocalPassiveMode();
? ? ? ? ? ? ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
? ? ? ? ? ? ftpClient.setControlEncoding("UTF-8");
? ? ? ? ? ? if (ftpClient.login(username, password)) {
? ? ? ? ? ? ? ? //log.info("連接ftp成功");
? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? //log.error("連接ftp失敗,可能用戶名或密碼錯誤");
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? disconnect(ftpClient);
? ? ? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? //log.error("連接失敗,可能ip或端口錯誤");
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? return flag;
? ? }
? ? /**
? ? ?* 上傳文件
? ? ?*
? ? ?* @param ftpClient
? ? ?* @param saveName ? ? ? ?全路徑。如/home/public/a.txt
? ? ?* @param fileInputStream 要上傳的文件流
? ? ?* @return
? ? ?*/
? ? public static boolean storeFile(FTPClient ftpClient, String saveName, InputStream fileInputStream) {
? ? ? ? boolean flag = false;
? ? ? ? try {
? ? ? ? ? ? if (ftpClient.storeFile(saveName, fileInputStream)) {
? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? ? ? //log.error("上傳成功");
? ? ? ? ? ? ? ? disconnect(ftpClient);
? ? ? ? ? ? }
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? //log.error("上傳失敗");
? ? ? ? ? ? disconnect(ftpClient);
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? return flag;
? ? }
}
?
總結(jié)
以上是生活随笔為你收集整理的安卓ftp客户端的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: InDesign 教程如何在帧之间流动文
- 下一篇: 论文格式自查