这里是代码:
/**
* Description: 从FTP服务器下载文件
* @param url FTP服务器hostname(ip)
* @param port FTP服务器端口 (一般默认的ftp端口为21)
* @param username FTP登录账号
* @param password FTP登录密码
* by xxw:以上的4个参数在配置文件里设置
*
* @param remotePath FTP服务器上的相对路径
* @param fileName 要下载的文件名
* by xxw:以上2个参数通过解析数据库里的数据获得
*
* @param localPath 下载后保存到本地的路径
* by xxw:以上这一个参数是待打包的文件夹的路径
* @return
*/
public static boolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(url, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalActiveMode();
System.out.println("当前服务器目录:"+remotePath);
//ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
//System.out.println(new String(remotePath.getBytes("gb2312"),"iso-8859-1"));
ftp.changeWorkingDirectory(new String(remotePath.getBytes("gb2312"),"iso-8859-1"));//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for(FTPFile ff:fs){
//System.out.println("文件夹中的文件:"+new String(ff.getName().getBytes("iso-8859-1"),"gb2312"));
if(ff.getName().equals(fileName)){
File localFile = new File(localPath+"/"+ff.getName());
//System.out.println(localPath+"/"+ff.getName());
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
private String getBaseDir(){
return this.getServletContext().getRealPath("/WEB-INF");
}
public static void main(String[] args){
boolean result=downFile("221.122.40.201", 21,"username", "password", "/PHP/","a.php","d:\\temp\\");
//把FTP中PHP文件夹下面的a.php文件复制到本地的D盘temp文件夹下
System.out.println(result);
System.out.println("success!");
}