`

Java_ftp_file upload and download

    博客分类:
  • Java
 
阅读更多

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.rar_DEMO_ftp_ftp upload demo_java ftp_java ftp server

    FTP demo, FTP client access to FTP server, anh upload/download file.

    ftp.rar_ftp_ftp upload_java 文件传输_文件传输

    在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户...

    java编写的ftp文件实时监控下载上传

    用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...

    Linux FTP服务配置

     ascii_download_enable=YES 是否使用ascii码方式上传和下载文件  ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息  deny_email_enable=YES  banned_email_file=/etc/vsftpd.banned_emails 是否...

    ftp4j-1.3.1下载

    FTPFile[] list = client.list("*.jpg"); //显示文件或文件夹的修改时间 java.util.Date md = client.modifiedDate("filename.ext"); //上传和下载文件 //下载服务器上remoteFile.ext 下载到本地 localFile.ext ...

    LINUX FTP设置方法

    #ascii_download_enable=YES /*是否使用ascii格式下载*/ #ftpd_banner=Welcome to blah FTP service. /*服务器banner*/ #deny_email_enable=YES /*启用电子邮件阻止*/ #banned_email_file=/etc/vsftpd/banned_...

    FTP windows版服务器

    在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...

    Ftp Server 源代码

    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/...

    PHP用FTP类上传文件视频等的简单实现方法

    文件1:ftp.php <?.../** * 仿写CodeIgniter的FTP类 ... delete_dir/delete_file * 7) 上传; upload * 8) 下载 download * * @author quanshuidingdang */ class Ftp { private $hostname = ''; pr

    c# 编写ftplib客户端

    /* 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 ...

    linux下ftp离线包

    在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...

    FTP教程手册.CHM

    在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...

    Linux-FTP配置说明及安装源文件

    #ascii_download_enable=YES /*是否使用ascii格式下载*/ #ftpd_banner=Welcome to blah FTP service. /*服务器banner*/ #deny_email_enable=YES /*启用电子邮件阻止*/ #banned_email_file=/etc/vsftpd/banned_emails...

    ftp网络下载

    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 { /** * ...

    FTPRush 1.1.1.16 Unicode - Cracked

    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 ...

    phpwind 4.3.2远程ftp上传附件功能(附件存另一个服务器)

    $viewdownload =str_replace("_{$value}_",'checked',$viewdownload); ◆下面加入 //远程ftp修改 $ftpselected[$remoteftp]='selected'; $ftpselect="<option value=0>本地空间</option>"; ...

    Linux FTP服务搭建

    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=...

    Open Ftp SSH Tools

    安全的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图片上传代码

    在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说...

    计算机网络课程设计 ftp文件传输系统 源代码

    FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明...

Global site tag (gtag.js) - Google Analytics