Java FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。
所用到的jar包有: 
commons-net-1.4.1.jar 
jakarta-oro.jar 
一、上传文件

 文件上传源代码
    /**
   * Description: 向FTP服务器上传文件
   * @Version1.0
   * @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(
    String url,//FTP服务器hostname
    int port,//FTP服务器端口
    String username, // FTP登录账号
    String password, //FTP登录密码
    String path, //FTP服务器保存目录
    String filename, //上传到FTP服务器上的文件名
    InputStream input // 输入流
    ) {
   boolean success = false;
   FTPClient ftp = new FTPClient();
   try {
    int reply;
    ftp.connect(url, port);//连接FTP服务器
    //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
    ftp.login(username, password);//登录
    reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
     ftp.disconnect();
     return success;
    }
    ftp.changeWorkingDirectory(path);
    ftp.storeFile(filename, input);    

    input.close();
    ftp.logout();
    success = true;
   } catch (IOException e) {
    e.printStackTrace();
   } finally {
    if (ftp.isConnected()) {
     try {
      ftp.disconnect();
     } catch (IOException ioe) {
     }
    }
   }
   return success;
  } 

以下是文件上传的测试用例:

 /**
  * 将本地文件上传到FTP服务器上
  *
  */
 public void testUpLoadFromDisk(){
  try {
   FileInputStream in=new FileInputStream(new File("D:/test.txt"));
   boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", in);
   System.out.println(flag);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  }
 }
 /**
  * 在FTP服务器上生成一个文件,并将一个字符串写入到该文件中
  *
  */
 public void testUpLoadFromString(){
  try {
   String str = "这是要写入的字符串!";
   InputStream input = new ByteArrayInputStream(str.getBytes("utf-8"));
   boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", input);
   System.out.println(flag);
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
 }

二、文件下载
文件下载源代码

 /**
  * Description: 从FTP服务器下载文件
  * @Version1.0
  * @param url FTP服务器hostname
  * @param port FTP服务器端口
  * @param username FTP登录账号
  * @param password FTP登录密码
  * @param remotePath FTP服务器上的相对路径
  * @param fileName 要下载的文件名
  * @param localPath 下载后保存到本地的路径
  * @return
  */
 public static boolean downFile(
   String url, //FTP服务器hostname
   int port,//FTP服务器端口
   String username, //FTP登录账号
   String password, //FTP登录密码
   String remotePath,//FTP服务器上的相对路径
   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.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
   FTPFile[] fs = ftp.listFiles();
   for(FTPFile ff:fs){
    if(ff.getName().equals(fileName)){
     File localFile = new File(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;
 }

以下是文件下载的测试用例:

 /**
  * 将FTP服务器上文件下载到本地
  *
  */
 public void testDownFile(){
  try {
   boolean flag = downFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", "D:/");
   System.out.println(flag);
  } catch (Exception e) {
   e.printStackTrace();
  }
 } 

以上就是本文的全部内容,希望对大家的学习有所帮助。

(0)

相关推荐

  • Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /bin/bash uftp 3.设置用户密码 sudo useradd -d /home/uftp -s /bin/bash uftp 4.创建用户目录 sudo mkdir /home/uftp 5.设置用户密码 sudo passwd uftp 6.设置/etc/vsftpd.conf配置文件 s

  • JAVA中使用FTPClient实现文件上传下载实例代码

    在java程序开发中,ftp用的比较多,经常打交道,比如说向FTP服务器上传文件.下载文件,本文给大家介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 一.上传文件 原理就不介绍了,大家直接看代码吧 /** * Description: 向FTP服务器上传文件 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保(cuihongbao@d-heaven.com)创建 * @param url F

  • Java使用FTPClient类读写FTP

    本文实例为大家分享了Java使用FTPClient类读写FTP的具体代码,供大家参考,具体内容如下 1.首先先导入相关jar包 2.创建一个连接FTP的工具类FTPUtil.java package com.metarnet.ftp.util; import java.io.IOException; import java.io.InputStream; import java.net.SocketException; import java.util.Properties; import or

  • Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录名及文件名中的中文显示为"??". 原因: FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码. 解决方案: 1.将中文的目录或文件名转为iso-8859-1编码的字符.参考代码: 复制代码 代码如下: String name="目录名或文件名"; name=new String(name.getBytes(&qu

  • 详解JAVA中使用FTPClient工具类上传下载

    详解JAVA中使用FTPClient工具类上传下载 在Java程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件.本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 1.写一个javabean文件,描述ftp上传或下载的信息 实例代码: public class FtpUseBean { private String host; private Integer port; private String us

  • Java FTPClient实现文件上传下载

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 所用到的jar包有:  commons-net-1.4.1.jar  jakarta-oro.jar  一.上传文件 文件上传源代码 /** * Description: 向FTP服务器上传文件 * @Version1.0 * @param url FTP服务器hostname * @param

  • Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题

    废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String username,String password,String path,String filename,InputStream input) { boolean success=false; FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp

  • java实现ftp文件上传下载功能

    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下 package getUrlPic; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org

  • Java中实现文件上传下载的三种解决方案(推荐)

    java文件上传与文件下载是程序开发中比较常见的功能,下面通过本文给大家介绍Java中实现文件上传下载的三种解决方案,具体详情如下所示: 第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numUp"; try { InputStream stream = file.getInputStream(

  • Java实现的文件上传下载工具类完整实例【上传文件自动命名】

    本文实例讲述了Java实现的文件上传下载工具类.分享给大家供大家参考,具体如下: 这是一个在Eclipse环境下采用Java语言实现文件上传下载的工具类.和之前介绍的C#文件上传下载工具类一样,在上传时,为避免文件名在服务器中重复,采用"服务器时间(定义到毫秒)+文件名+文件后缀"的方式作为服务器上的文件名:下载过程中利用 spring mvc ResponseEntity 做文件下载,返回的是字节流,下载成功后可自定义文件的保存路径. 具体源码如下所示: package com.ut

  • Java实现HDFS文件上传下载

    本文实例为大家分享了利用Java实现HDFS文件上传下载的具体代码,供大家参考,具体内容如下 1.pom.xml配置 <!--配置--> <properties>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     <maven.compiler.source>1.8</maven.compiler.source>     <mav

  • 基于Java文件输入输出流实现文件上传下载功能

    本文为大家分享了Java实现文件上传下载功能的具体代码,供大家参考,具体内容如下 前端通过form表单的enctype属性,将数据传递方式修改为二进制"流"的形式,服务端(servlet)通过  getInputStream() 获取流信息, 运用java I/O 流的基础操作将流写入到一个服务端临时创建的文件temp中,然后再次利用文件基本操作,读取并截取临时文件内容,根据其中信息创建相应的文件,将读取出来的具体信息写入,下载时,根据提交的文件名称,找到服务器端相应的文件,然后根据输

  • java实现FTP文件上传与文件下载

    本文实例为大家分享了两种java实现FTP文件上传下载的方式,供大家参考,具体内容如下 第一种方式: package com.cloudpower.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import sun.net.TelnetInputStream; import sun.net.TelnetO

随机推荐