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();

 }

}

/**

 * 将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();

 }  

}

/**
* 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;
}

时间: 2024-10-14 09:40:40

Java FTPClient实现文件上传下载的相关文章

Java中实现文件上传下载的三种解决方案

第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numUp"; try { InputStream stream = file.getInputStream();// 把文件读入 String filePath = request.getRealPath(fileAddre);//取系统当前路径

java+web+大文件上传下载

文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用HTML5的API,对文件上传进行渐进式增强:     * iframe上传  * ajax上传  * 进度条  * 文件预览  * 拖放上传 1.1 传统形式 文件上传的传统形式,是使用表单元素file,参考 http://www.ruanyifeng.com/blog/2012/08/file_

JAVA中使用FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 一.上传文件 原理就不介绍了,大家直接看代码吧 /** * Description: 向FTP服务器上传文件 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保([email protected])创建 * @param url FTP服务器hostname

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 try{ if(port>-1) { ftp.con

JAVA基础篇—文件上传下载

/index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&qu

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

java里面的文件上传与下载

文件的上传与下载主要用到两种方法:1.方法一:commons-fileupload.jar commons-io.jarapache的commons-fileupload实现文件上传,下载 [upload]package com.handson.bbs.servlet; import java.io.File;import java.io.IOException;import java.util.Date;import java.util.List;import javax.servlet.Se

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

【Java】JavaWeb文件上传和下载

文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能.common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载.用该组件可实现一次上传一个或多个文件,并可限制文件大小. 开发环境 创建一个javaweb项目,加入common-f