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

一、上传文件

原理就不介绍了,大家直接看代码吧

  1. /**
  2. * Description: 向FTP服务器上传文件
  3. * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保(cuihongbao@d-heaven.com)创建
  4. * @param url FTP服务器hostname
  5. * @param port FTP服务器端口
  6. * @param username FTP登录账号
  7. * @param password FTP登录密码
  8. * @param path FTP服务器保存目录
  9. * @param filename 上传到FTP服务器上的文件名
  10. * @param input 输入流
  11. * @return 成功返回true,否则返回false
  12. */
  13. public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {
  14. boolean success = false;
  15. FTPClient ftp = new FTPClient();
  16. try {
  17. int reply;
  18. ftp.connect(url, port);//连接FTP服务器
  19. //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  20. ftp.login(username, password);//登录
  21. reply = ftp.getReplyCode();
  22. if (!FTPReply.isPositiveCompletion(reply)) {
  23. ftp.disconnect();
  24. return success;
  25. }
  26. ftp.changeWorkingDirectory(path);
  27. ftp.storeFile(filename, input);
  28. input.close();
  29. ftp.logout();
  30. success = true;
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. } finally {
  34. if (ftp.isConnected()) {
  35. try {
  36. ftp.disconnect();
  37. } catch (IOException ioe) {
  38. }
  39. }
  40. }
  41. return success;
  42. }<pre></pre>

下面我们写两个小例子:

1.将本地文件上传到FTP服务器上,代码如下:

  1. @Test
  2. public void testUpLoadFromDisk(){
  3. try {
  4. FileInputStream in=new FileInputStream(new File("D:/test.txt"));
  5. boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", in);
  6. System.out.println(flag);
  7. } catch (FileNotFoundException e) {
  8. e.printStackTrace();
  9. }
  10. }<pre></pre>

2.在FTP服务器上生成一个文件,并将一个字符串写入到该文件中

  1. @Test
  2. public void testUpLoadFromString(){
  3. try {
  4. InputStream input = new ByteArrayInputStream("test ftp".getBytes("utf-8"));
  5. boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", input);
  6. System.out.println(flag);
  7. } catch (UnsupportedEncodingException e) {
  8. e.printStackTrace();
  9. }
  10. }<pre></pre>

二、下载文件

从FTP服务器下载文件的代码也很简单,参考如下:

    1. /**
    2. * Description: 从FTP服务器下载文件
    3. * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔红保(cuihongbao@d-heaven.com)创建
    4. * @param url FTP服务器hostname
    5. * @param port FTP服务器端口
    6. * @param username FTP登录账号
    7. * @param password FTP登录密码
    8. * @param remotePath FTP服务器上的相对路径
    9. * @param fileName 要下载的文件名
    10. * @param localPath 下载后保存到本地的路径
    11. * @return
    12. */
    13. public static boolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) {
    14. boolean success = false;
    15. FTPClient ftp = new FTPClient();
    16. try {
    17. int reply;
    18. ftp.connect(url, port);
    19. //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
    20. ftp.login(username, password);//登录
    21. reply = ftp.getReplyCode();
    22. if (!FTPReply.isPositiveCompletion(reply)) {
    23. ftp.disconnect();
    24. return success;
    25. }
    26. ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
    27. FTPFile[] fs = ftp.listFiles();
    28. for(FTPFile ff:fs){
    29. if(ff.getName().equals(fileName)){
    30. File localFile = new File(localPath+"/"+ff.getName());
    31. OutputStream is = new FileOutputStream(localFile);
    32. ftp.retrieveFile(ff.getName(), is);
    33. is.close();
    34. }
    35. }
    36. ftp.logout();
    37. success = true;
    38. } catch (IOException e) {
    39. e.printStackTrace();
    40. } finally {
    41. if (ftp.isConnected()) {
    42. try {
    43. ftp.disconnect();
    44. } catch (IOException ioe) {
    45. }
    46. }
    47. }
    48. return success;
    49. }<pre></pre>

java FTP 上传下载删除文件的更多相关文章

  1. 通过代码链接ftp上传下载删除文件

    因为我的项目是Maven项目,首先要导入一个Maven库里的包:pom.xml <dependency>            <groupId>com.jcraft</ ...

  2. Java.ftp上传下载

    1:jar的maven的引用: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  3. Win10 搭建FTP环境,并使用Java实现上传,下载,删除

    测试的环境一般都是在自己电脑上面装的,现在一般都使用Win10开发 搭建FTP: 第一步:打开控制面板:点击程序 第二步: 第三步: 然后点击确认后等待完成 完成后在启动中找到IIS管理器 打开 在网 ...

  4. java 通过sftp服务器上传下载删除文件

    最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; imp ...

  5. C#WPF做FTP上传下载获取文件列表

    Xaml.cs: using Microsoft.Win32;using System;using System.Collections.Generic;using System.IO;using S ...

  6. java Ftp上传创建多层文件的代码片段

    StringBuilder sBuilder = new StringBuilder();            String[] pah = path.split("/");   ...

  7. FastDfs java客户端上传、删除文件

    #配置文件 connect_timeout = 2 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 9090 http.an ...

  8. java客户端调用ftp上传下载文件

    1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...

  9. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

随机推荐

  1. [Android Traffic] android 流量计算方法

    android流量简介 流量统计文件:路径/proc/net/dev 打开文件,其中 lo 为本地流量, rmnet0 为3g/2g流量, wlan0 为无线流量. 在/sys/class/net/下 ...

  2. python--如何操作表

    >>> import MySQLdb >>> conn=MySQLdb.connect(user='admin',passwd='',host='192.168.3 ...

  3. Linq-语句之Select/Distinct和Count/Sum/Min/Max/Avg

    上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to Data ...

  4. Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)

    先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...

  5. maven运行junit用例并生成报告maven-surefire-plugin,maven-antrun-extended-plugin

    转载:http://blog.csdn.net/hdyrz/article/details/78398964 测试类如下: package com.mmnn.test.testcase; import ...

  6. Django的信号机制详解

    Django提供一种信号机制.其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) .当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行. Django内置了一些信号 ...

  7. 在对方电脑建立IPC连接, 利用IPC$入侵 运行木马

    第一大步:  IPC漏洞的建立 1)在目标主机上设置组策略:開始->执行-〉gpedit.msc 2)计算机配置->windows配置-〉本地策略-〉安全选项 3)在安全选项中, 将网络訪 ...

  8. WP8控件进度条(ProgressBar)的使用

    --前台代码 <Grid x:Name="ContentPanel"  Grid.Row="1" Margin="0,0,24,0"& ...

  9. 各种broker对比

    broker的主要职责是接受发布者发布的所有消息,并将其过滤后分发给不同的消息订阅者.如今有很多的broker,下面就是一张关于各种broker对比的图片: 在使用mosquitto时,如果想使用集群 ...

  10. ie6、ie7下JSON.parse JSON未定义的解决方法

    解决方法一: var jsons = req.responseText; var s; if (typeof(JSON) == 'undefined'){ s = eval("(" ...