在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;
}

 
 

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

  1. Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...

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

    第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null ...

  3. java中的文件上传下载

    java中文件上传下载原理 学习内容 文件上传下载原理 底层代码实现文件上传下载 SmartUpload组件 Struts2实现文件上传下载 富文本编辑器文件上传下载 扩展及延伸 学习本门课程需要掌握 ...

  4. java+web+大文件上传下载

    文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...

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

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

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

    一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  7. java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题

    //文件上传 public static boolean uploadToFTP(String url,int port,String username,String password,String ...

  8. java web关于文件上传下载的总结

    文件上传使用<form method="POST"   enctype="multipart/form-data"> , 而不是默认的applica ...

  9. JAVA基础篇—文件上传下载

    /index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

随机推荐

  1. JAVA第三周作业

    一:枚举 package homework; public class EnumTest { public static void main(String[] args) { Size s=Size. ...

  2. JQuery学习之操作DOM

    1.DOM,就是Document Object Model(文档对象模型) 2.获得内容的方法: **text():设置或返回所选元素的文本内容 $("#btn1").click( ...

  3. 《DSP using MATLAB》示例Example4.7

    ROC分三种情况:

  4. DSP using MATLAB 示例Example3.22

    代码: % Discrete-time Signal x2(n) Ts = 0.001; n = -5:1:5; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*abs(nT ...

  5. delphi 对Tmemo指定的行写入

    mmoMonitor:Tmemo; mmoMonitor.Lines.ValueFromIndex[0]:=aInfo ; procedure TMainForm.LogInfo(aInfo: str ...

  6. 后缀数组 POJ 2406 Power Strings

    题目链接 题意:连续重复子串.给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的(L = S^R ), 求 R 的最大值. 分析:枚举长度,判断条件是能被总长度整除且LCP ( ...

  7. iOS 安装Cocoapods以及安装第三方库的操作流程

    安装cocoapods的流程: 1.打开终端,输入:  sudo gem update —system 2.输入密码,稍等 3.gem sources --remove https://rubygem ...

  8. ie不支持getElementsByName的解决办法

    在chrome下getElementsByName运行正常,可在IETester7~11下都不支持  w3c规范中getElementsByName是按着name属性进行检索的,而MS的IE却是按着i ...

  9. three.js正交投影照相机

    照相机又分为正交投影照相机与透视投影照相机 举个简单的例子来说明正交投影与透视投影照相机的区别.使用透视投影照相机获得的结果是类似人眼在真实世界中看到的有"近大远小"的效果(如下图 ...

  10. HTML无序列表和有序列表

    html无序列表<ul><li></li></ul>   ul属性设定:<ul type="square"> 常用属性值 ...