jar
commons-net commons-net 3.6监听器
监听进度
import org.apache.commons.net.io.CopyStreamEvent;
import org.apache.commons.net.io.CopyStreamListener;
public class UploadListen implements CopyStreamListener{
private long totalSize=1;
public UploadListen(long totalSize) {
super();
this.totalSize = totalSize;
}
@Override
public void bytesTransferred(long totalBytesTransferred, int bytesTransferred, long streamSize) {
double processed = ( totalBytesTransferred*100)/ totalSize;
//System.out.println("upload progress = " +processed +" %");
}
@Override
public void bytesTransferred(CopyStreamEvent event) {
// TODO Auto-generated method stub
}
}
FTP工具类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.Calendar;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPListParseEngine;
import org.apache.commons.net.ftp.FTPReply;
public class FtpUtils {
private static String LOCAL_CHARSET = "GBK";
// FTP协议里面,规定文件名编码为iso-8859-1
private static String SERVER_CHARSET = "ISO-8859-1";
public FTPClient ftpClient = null;
public void createFtpClient(String host,String userName,String password,int port) {
ftpClient = new FTPClient();
try {
// 连接指定的ftp服务器,需要设定好服务器的ip地址
ftpClient.connect(host, port);
// 登录的用户名和密码
boolean login = ftpClient.login(userName,password);
if(!login){
System.err.println("登录ftp服务器失败");
ftpClient.disconnect();
return;
}
System.out.println("login ftp ok ...");
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {
// 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).
LOCAL_CHARSET = "UTF-8";
}
ftpClient.setControlEncoding(LOCAL_CHARSET);
ftpClient.enterLocalPassiveMode();// 设置被动模式
// client.setFileType(getTransforModule());// 设置传输的模式
// 查看当前目录
String workingDirectory = ftpClient.printWorkingDirectory()