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 org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FtpManager {
private static FTPClient ftpClient = new FTPClient();
private static boolean isSuccess = false;
/**
* 连接并登录到ftp服务器
* @param ftpUrl:远程ftp地址
* @param port:端口号,默认为21
* @param loginName:登录名称
* @param passWord:登录密码
* @param remotePath:远程目录
* @return
*/
public static boolean connect(String ftpUrl,int port,String loginName,String passWord,String remotePath){
int replyCode = 0;
try {
//设置编码格式,防止文件名称中出现中文乱码
ftpClient.setControlEncoding("UTF-8");
//连接ftp服务器
ftpClient.connect(ftpUrl, port);
replyCode = ftpClient.getReplyCode();
if(FTPReply.isPositiveCompletion(replyCode)){
//验证登录
if(ftpClient.login(loginName, passWord)){
isSuccess = true;
}
}else{
ftpClient.disconnect();
}
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE); // 设置上传文件以二进制上传
//切换到ftp服务器当前的工作目录
ftpClient.changeWorkingDirectory(remotePath);
} catch (IOException e) {
return isSuccess;
}
return isSuccess;
}
/**
* 将本地文件上传到远程ftp服务器
* @param ftpUrl:远程ftp地址
* @param port:端口号,默认为21
* @param loginName:登录名称
* @param passWord:登录密码
* @param remotePath:保存上传文件的远程工作目录
* @param localFile:本地要上传的文件,包含路径信息
*/
public static void uploadFile(String ftpUrl,int port,String loginName,String passWord,String remotePath,String localFile){
File remoteFile = null;
//上传的文件名称,不能包含路径信息,否则无法上传成功
String remoteFileName = "";
InputStream inputStream = null;
boolean success = connect(ftpUrl,port,loginName,passWord,remotePath);
if(success){
try {
remoteFile = new File(localFile);
remoteFileName = remoteFile.getName(); // 设置远程文件名
inputStream = new FileInputStream(remoteFile);
//开始上传
ftpClient.storeFile(remoteFileName,inputStream);
inputStream.close();
ftpClient.logout();
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
closeConnect();
}
}else{
}
}
/**
* 从远程ftp服务器上下载文件
* @param ftpUrl:远程ftp地址
* @param port:端口号,默认为21
* @param loginName:登录名称
* @param passWord:登录密码
* @param remotePath:远程工作目录
* @param remoteFileName:要下载的远程文件名,不含路径信息
* @param localPath:保存下载文件的本地目录
*/
public static void downloadFile(String ftpUrl,int port,String loginName,String passWord,String remotePath,String localPath){
File localFile = null;
OutputStream outputStream = null;
boolean success = connect(ftpUrl,port,loginName,passWord,remotePath);
if(success){
try {
//获取当前目录下所有的文件名称,不包含子目录
String[] fileNames = ftpClient.listNames();
for(String fileName:fileNames){
localFile = new File(localPath+File.separator+fileName); // File.separator = "\"
outputStream = new FileOutputStream(localFile);
//开始下载
ftpClient.retrieveFile(fileName,outputStream);
//下载完成后删除该文件
//ftpClient.deleteFile(file);
outputStream.close();
}
ftpClient.logout();
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
closeConnect();
}
}else{
System.out.println("ftp连接失败,请检查用户名和密码是否正确");
}
}
/**
* 关闭与ftp服务器的连接
*/
public static void closeConnect(){
try {
if (ftpClient != null && ftpClient.isConnected()) {
ftpClient.disconnect();
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if(ftpClient != null && ftpClient.isConnected()){
ftpClient.disconnect();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
public static void main(String[] args){
downloadFile(ip,21,username,password,/images/,E:);
uploadFile(ip,21,username,password,/images/,d:/aa.gif); // 远程路径要写相对
}
}
相关推荐
FTP demo, FTP client access to FTP server, anh upload/download file.
在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户...
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
ascii_download_enable=YES 是否使用ascii码方式上传和下载文件 ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息 deny_email_enable=YES banned_email_file=/etc/vsftpd.banned_emails 是否...
FTPFile[] list = client.list("*.jpg"); //显示文件或文件夹的修改时间 java.util.Date md = client.modifiedDate("filename.ext"); //上传和下载文件 //下载服务器上remoteFile.ext 下载到本地 localFile.ext ...
#ascii_download_enable=YES /*是否使用ascii格式下载*/ #ftpd_banner=Welcome to blah FTP service. /*服务器banner*/ #deny_email_enable=YES /*启用电子邮件阻止*/ #banned_email_file=/etc/vsftpd/banned_...
在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...
TYPSoft FTP Server is a fast and easy ftp server with support toStandard FTP Command, Clean interface, Virtual File Systemarchitecture, ability to resume Download and Upload, IP Restriction, Login/...
文件1:ftp.php <?.../** * 仿写CodeIgniter的FTP类 ... delete_dir/delete_file * 7) 上传; upload * 8) 下载 download * * @author quanshuidingdang */ class Ftp { private $hostname = ''; pr
/* upload c:\localfile.txt to the current ftp directory as file.txt */ } catch (FtpException e) { Console.WriteLine(String.Format("FTP Error: {0} {1}", e.ErrorCode, e.Message)); } foreach ...
在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...
在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...
#ascii_download_enable=YES /*是否使用ascii格式下载*/ #ftpd_banner=Welcome to blah FTP service. /*服务器banner*/ #deny_email_enable=YES /*启用电子邮件阻止*/ #banned_email_file=/etc/vsftpd/banned_emails...
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class FilePhoto { /** * ...
Another advantage of FTPRush is the support of folder synchronization, so it can look after the identity of folders and contained files in upload and download directory. Identification of files that ...
$viewdownload =str_replace("_{$value}_",'checked',$viewdownload); ◆下面加入 //远程ftp修改 $ftpselected[$remoteftp]='selected'; $ftpselect="<option value=0>本地空间</option>"; ...
ascii_download_enable=YES|NO ascii_upload_enable=YES|NO 超时选项: idle_session_timeout data_connection_timeout accept_timeout connect_timeout 负载控制: max_clients=numerical value max_per_ip=...
安全的FTP传输 Imports Org.Mentalis.Security.Ssl Imports Org.Mentalis.Security.Certificates Imports Org.Mentalis.Security.Cryptography Imports System Imports System.IO Imports System.Exception '...
在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...
FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明...