androidftp代码
❶ android ftp的retrieveFileStream(mFileName);方法
new String(mFileName.getBytes("gbk"),"iso-8859-1")这个应该是可以的,我也遇到这个问题,因为FTPFile得到的名字在控制台打印出来的iso-8859-1的编码,在转gbk就是中文了,反向所以这个方法的给它识别的iso-8859-1的编码
❷ Android开发访问FTP服务器
commons-net.jar里面有ftp相关的接口,这个是我自己封装的一个类
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class FTPUtils {
/**
* 通过ftp上传文件
*
* @param fileNamePath
* 要上传的文件路径 , 以'结'尾
* @param fileName
* 要上传的文件名
* @return 如果成功返回"" , 否则返回错误结果
*/
public static String ftpUpload(String sdcardFullFileName, String fileName, String ftpPath) {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
String returnMessage = "";
try {
ftpClient.connect(ConnectConfig.ftpIP, ConnectConfig.ftpPort);
boolean loginResult = ftpClient.login(ConnectConfig.ftpUserName, ConnectConfig.ftpPassWord);
int returnCode = ftpClient.getReplyCode();
if (loginResult && FTPReply.isPositiveCompletion(returnCode)) {// 如果登录成功
String[] splits = ftpPath.split("/");
String temps = splits[0];
ftpClient.makeDirectory(temps);
for(int i=1;i<splits.length;i++){
temps += "/" + splits[i];
ftpClient.makeDirectory(temps);
}
// ftpClient.makeDirectory(ftpPath);
// 设置上传目录
ftpClient.changeWorkingDirectory(ftpPath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
fis = new FileInputStream(sdcardFullFileName);
// boolean result = ftpClient.(fileName, fis);
boolean result = ftpClient.storeFile(fileName, fis);
if(result){
returnMessage = ""; // 上传成功
}else{
returnMessage = "上传失败";
}
} else {// 如果登录失败
returnMessage = "登录FTP时失败,FTP用户名或者密码错误!";
}
} catch (IOException e) {
// ftp发送出现异常
e.printStackTrace();
returnMessage = "FTP客户端出错!" + e;
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return returnMessage;
}
}