(转自新浪 博客)
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
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 FTP {
private String userName; //FTP 登录用户名
private String password; //FTP 登录密码
private String ip; //FTP 服务器地址IP地址
private int port; //FTP 端口
private FTPClient ftpClient = null; //FTP 客户端代理
public FTP(String userName,String password,String ip,int port) {
this.userName = userName;
this.password = password;
this.ip = ip;
this.port = port;
}
public boolean connectServer() {
boolean flag = true;
if (ftpClient == null) {
int reply;
try {
System.out.println("into ftpClient == null");
ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK"); //文件名乱码,默认ISO8859-1,不支持中文
// System.out.println("encoding "+ftpClient.getControlEncoding());
ftpClient.setDefaultPort(port);
ftpClient.connect(ip);
ftpClient.login(userName, password);
System.out.println("Connected to " + ip );
System.out.print(ftpClient.getReplyString());
reply = ftpClient.getReplyCode();
ftpClient.setDataTimeout(120000);
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
System.err.println("FTP server refused connection.");
flag = false;
}
} catch (SocketException e) {
flag = false;
e.printStackTrace();
System.err.println("登录ftp服务器 " + ip + " 失败,连接超时!");
} catch (IOException e) {
flag = false;
e.printStackTrace();
System.err.println("登录ftp服务器 " + ip + " 失败,FTP服务器无法打开!");
}
}
System.out.println("登陆ftp服务器成功"+ip);
return flag;
}
public void listRemoteAllFiles(String path) {
try {
FTPListParseEngine f = ftpClient.initiateListParsing(path);
while (f.hasNext()) {
FTPFile[] files = f.getNext(5);
for(FTPFile file:files){
disFile(file,path);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void disFile(FTPFile file,String path){
if(file.isDirectory() && !file.getName().equals(".")&& !file.getName().equals("..")){
System.out.println(File.separator + file.getName());
listRemoteAllFiles(path+ File.separator +file.getName());
}else if(!file.getName().equals(".")&& !file.getName().equals("..")){
System.out.println(file.getName());
}
}
public void closeConnect() {
System.out.println("关闭ftp服务器");
try {
if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void downFile(String remotePath,String fileName,String localPath) {
FTPFile[] fs;
try {
ftpClient.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
fs = ftpClient.listFiles();
for(FTPFile ff:fs){
if(ff.getName().equals(fileName)){
File localFile = new File(localPath+ File.separator +ff.getName());
FileOutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(ff.getName(), is);
is.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void upFile(String path, String filename, String localFilePath){
try {
FileInputStream in=new FileInputStream(new File(localFilePath));
ftpClient.changeWorkingDirectory(path);
ftpClient.storeFile(filename, in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
FTP ftp = new FTP("lixin","008357","192.168.1.79",21);
ftp.connectServer();
ftp.listRemoteAllFiles("/");
// ftp.downFile("/测试报告", "测试报告.mmap", "D:\\development\\workspace\\swing");
// ftp.upFile("/测试报告", "ZIP", "E:\\个人\\save\\zip");
ftp.closeConnect();
}
}
分享到:
相关推荐
org.apache.commons.net.ftp.FTPClient包,不错,在实际项目和产品中使用过。
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
FTP应用的jar包,主要用于java开发FTP上传下载
.net.ftp.FTPClient jar ,exaple, commons-net-2.0.jar
NULL 博文链接:https://vakinge.iteye.com/blog/487486
org.apache.commons.net.ftp的官方完整jar包 放心使用
Apache Commons Net » 3.3 org.apache.commons.net.ftp.FTPClient
上传了收集的最新的 commons-io-2.4.jar 包 和 commons-net-3.3.jar 以及 FTP java调用例子。net 包是一个用于操作Internet基础协议(Finger,Whois,TFTP,Telnet,POP3,FTP,NNTP,以及SMTP)的底层API。Net包...
sun.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP
FTPClient封装了所有必要的功能来存储和检索从FTP服务器上的文件。 这个类负责所有与FTP服务器交互的底层细节,并提供了便捷的更高层次的接口。 正如来自所有类SocketClient ,您必须首先连接到与服务器connect做...
import org.apache.commons.io.IOUtils; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply;
Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦
该客户端软件使用的是org.apache.commons.net.ftp.FTPClient这个类,FTPClient这个类,该类具体的可查看官网的api文档,链接:FTPClient API,需要自己导入jar包,我下载的是commons-net-3.6.jar,下载链接为...
org.apache.commons.net.ftp.FTPClient的最新jar报
获取ftp服务器文件的大小,从而可以设置下载的进度条
本项目使用org.apache.commons.net.ftp.FTPClient实现文件上传到ftp服务器,解决不能上传中文文件的问题。
TestFtpUpload 为示例工程 依赖的jar 里面都有 倒入到myeclipse就可使用 ...2. 通过apache:org.apache.commons.net.ftp.FTPClient 3. 通过edtftp: com.enterprisedt.net.ftp.FileTransferClient
基于org.apache.commons.net.ftp.FTPClient; 实现的FTP 上传下载 封装类
org.apache.commons.net.ftp.FTPClient进行上传文件,功能强大 ,可实现文件的上传和下载
Java常用FTP 文件操作 说明 Apache FTPClient ftp4j jftp java中实现ftp 文件上传 文件下载