java实现Ftp批量文件及解压


java实现连接登录Ftp,下载Ftp指定文件夹下的所有文件,并解压所有压缩文件,同时支持对指定文件夹进行文件压缩
资源截图
代码片段和文件信息
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
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 org.apache.commons.net.nntp.NewGroupsOrNewsQuery;
import org.apache.log4j.Logger;

/**
 * 采用的是apache commons-net架包中的ftp工具类实现的
 * 
 * @author shi
 * 
 */
public class FtpTools {
private String username;
private String password;
private String ftpHostName;
private int port = 21;
private FTPClient ftpClient = new FTPClient();
private FileOutputStream fos = null;
public List list = new ArrayList();
private Logger logger = Logger.getLogger(FtpTools.class);

public FtpTools(String username String password String ftpHostName int port) {
super();
this.username = username;
this.password = password;
this.ftpHostName = ftpHostName;
this.port = port;
}

/**
 * 建立连接b
 */
private void connect() {
try {
logger.debug(“开始连接“);
// 连接
ftpClient.connect(ftpHostName port);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
}
// 登录
ftpClient.login(username password);
ftpClient.setBufferSize(256);

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

ftpClient.setControlEncoding(“utf8“);
logger.debug(“登录成功!“);
logger.debug(“开始登录!“);
} catch (SocketException e) {
logger.error(““ e);
} catch (IOException e) {
logger.error(““ e);
}

}

/**
 * 关闭输入输出流
 * 
 * @param fos
 */
private void close(FileOutputStream fos) {
try {
if (fos != null) {
fos.close();
}

ftpClient.logout();
logger.info(“退出登录“);
ftpClient.disconnect();
logger.info(“关闭连接“);
} catch (IOException e) {
logger.error(““ e);
}
}

/**
 * 下载文件
 * 
 * @param ftpFileName
 * @param localDir
 */
public void down(String ftpFileName String localDir) {
connect();
downFileOrDir(ftpFileName localDir);
close(fos);
}

private void downFileOrDir(String ftpFileName String localDir) {
try {
File file = new File(ftpFileName);

File temp = new File(localDir);

if (!temp.exists()) {
temp.mkdirs();
}
// 判断是否是目录
if (isDir(ftpFileName)) {
String[] names = ftpClient.listNames();
for (int i = 0; i < names.length; i++) {
System.out.println(“---------------“+names[i] + “-------------------“);
list.add(names[i]);
if (isDir(names[i])) {
downFileOrDir(ftpFileName + ‘/‘ + names[i] localDir + File.separator + names[i]);
ftpClient.changeToParentDirectory();
} else {
File localfile = new File(localDir + File.separator + names[i]);
if (!localfile.exists()) {
fos = new FileOutputStream(localfile);
ftpClient.retrieveFile(names[i] fos);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-13 16:59  Ftp
     文件         613  2018-12-13 00:27  Ftp.classpath
     文件         379  2018-12-13 00:22  Ftp.project
     目录           0  2018-12-13 16:59  Ftp.settings
     文件         598  2018-12-13 00:22  Ftp.settingsorg.eclipse.jdt.core.prefs
     目录           0  2018-12-13 16:59  Ftpin
     文件        5493  2018-12-13 16:58  FtpinFtpTools.class
     文件        1805  2018-01-09 10:11  Ftpinlog4j.properties
     文件        1959  2018-12-13 16:58  FtpinTestFileUtil.class
     文件        4472  2018-12-13 16:41  Ftpiniputil.class
     文件        4327  2018-12-13 16:20  Ftpiniputil2.class
     目录           0  2018-12-13 16:59  Ftplib
     文件     1323005  2018-12-13 00:23  Ftplibant.jar
     文件      307410  2018-12-13 00:23  Ftplibcommons-net-3.6.jar
     文件      481535  2018-01-08 18:57  Ftpliblog4j-1.2.16.jar
     文件     2036195  2018-12-13 00:23  Ftpliborg.apache.tools.ant-1.9.7.jar
     文件       43926  2018-12-13 00:23  Ftplibslf4j-api-1.8.0-beta0.jar
     文件        2957  2018-12-13 15:49  Ftplog.log
     目录           0  2018-12-13 16:59  Ftpsrc
     文件        4816  2018-12-13 16:58  FtpsrcFtpTools.java
     文件        1805  2018-01-09 10:11  Ftpsrclog4j.properties
     文件         845  2018-12-13 16:58  FtpsrcTestFileUtil.java
     文件        4338  2018-12-13 16:41  Ftpsrciputil.java
     文件        3243  2018-12-13 16:20  Ftpsrciputil2.java

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)