主要就是把对ftp的访问封装成一个常用类就行了。
首先是要学会怎么Java怎么用,我是将其封装成我自己的一个工具包,这样下次使用的时候就可以直接拿出来用了。
package com.utils;
import java.io.InputStream;
/**
*
* @author Panpan
*
*/
public class FtpBean {
private String ftpUrl;//ftp地址
private int port;//端口号是21
private String userName;//ftp用户名
private String passWord;//ftp密码
private String ftpPath;//ftp上可以访问的文件路径
private String fileName;//文件名
private InputStream input;//输入流(用做上传文件或在ftp新建文件使用)
private String localPath;//用于从ftp上下载文件存放的路径
public FtpBean() {
super();
// TODO Auto-generated constructor stub
}
public FtpBean(String ftpUrl, int port, String userName, String passWord, String ftpPath, String fileName,
InputStream input, String localPath) {
super();
this.ftpUrl = ftpUrl;
this.port = port;
this.userName = userName;
this.passWord = passWord;
this.ftpPath = ftpPath;
this.fileName = fileName;
this.input = input;
this.localPath = localPath;
}
}
package com.utils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.junit.Test;
public class FtpUtil {
/**
* Description: 向FTP服务器上传文件
* @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保(cuihongbao@d-heaven.com)创建
* @param url FTP服务器hostname
* @param port FTP服务器端口
* @param username FTP登录账号
* @param password FTP登录密码
* @param path FTP服务器保存目录
* @param filename 上传到FTP服务器上的文件名
* @param input 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(FtpBean ftpBean) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ftpBean.getFtpUrl(), ftpBean.getPort());//连接FTP服务器
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(ftpBean.getUserName(), ftpBean.getPassWord());//登录
ftp.setFileType(FTP.BINARY_FILE_TYPE); //设置文件类型为binary
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(ftpBean.getFtpPath());
//設置為被動模式
//ftp.enterLocalPassiveMode();
ftp.storeFile(ftpBean.getFileName(), ftpBean.getInput());
ftpBean.getInput().close();
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
}