`
冰糖葫芦有点酸
  • 浏览: 29501 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

Java使用FTP下载文件

    博客分类:
  • Java
阅读更多
package com.test.ftp.download;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;

/**
 * 使用 FTP 实现文件上传下载<br>
 * @author admin
 *
 */
public class FavFTPUtil {

    public static Logger _log = Logger.getLogger(FavFTPUtil.class);
    /**
     * 下载文件
     *
     * @param hostname
     *            FTP服务器地址
     * @param port
     *            FTP服务器端口号
     * @param username
     *            FTP登录帐号
     * @param password
     *            FTP登录密码
     * @param pathname
     *            FTP服务器文件目录
     * @param filename
     *            文件名称
     * @param localPath
     *            下载后的文件路径
     * @return
     */
    public static boolean downloadFile(String hostname, int port, String username, String password, String pathname,
                                       String filename, String localPath) {
        boolean flag = false;
        FTPClient ftpClient = new FTPClient();

        //传输的字符编码(防乱码)
        ftpClient.setControlEncoding("UTF-8");

        //超时时间(防止FTP僵死)
        ftpClient.setConnectTimeout(1000 * 60);
        ftpClient.setDataTimeout(1000 * 60);
        ftpClient.setDefaultTimeout(1000 * 60);

        //工作流的大小
        ftpClient.setBufferSize(1024 * 4);

        // 被动模式 
        ftpClient.enterLocalPassiveMode();

        try {
            // 连接FTP服务器
            ftpClient.connect(hostname, port);
           
            // 登录FTP服务器
            ftpClient.login(username, password);
            // 验证FTP服务器是否登录成功
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                _log.error("Failed to login");
                return flag;
            }
            // 切换FTP目录
            ftpClient.changeWorkingDirectory(pathname);
            FTPFile[] ftpFiles = ftpClient.listFiles();
            _log.info("File number:" + ftpFiles.length);
            for (FTPFile file : ftpFiles) {
                if (filename.equalsIgnoreCase(file.getName())) {
                    File localFile = new File(localPath + "/" + file.getName());
                    OutputStream os = new FileOutputStream(localFile);
                    _log.info("begin to download file ------------------");
                    ftpClient.retrieveFile(file.getName(), os);
                    _log.info("finished !!!");
                    os.close();
                }
            }
            ftpClient.logout();
            flag = true;
        } catch (Exception e) {
            _log.error(e);
        } finally {
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.logout();
                } catch (IOException e) {

                }
            }
        }
        return flag;
    }

    public static void main(String[] args) {
        // FTP server account info
        String hostname = "192.168.1.2";
        int port = 21;
        String username = "test";
        String password = "abc";

        // download file info in FTP server
        String pathname = "filePath";
        String filename = "file.zip";

        // location for downloaded file in local
        String localpath = "C:/Data";
        downloadFile(hostname, port, username, password, pathname, filename, localpath);
    }
}


开发过程中遇到一个问题,一开始server连接成功了,server上文件路径也没有问题,可是ftpClient.listFiles()始终返回empty,后来加上ftpClient.enterLocalPassiveMode();后才执行成功了。

参考:
https://blog.csdn.net/cainiao_ACCP/article/details/71394891
分享到:
评论

相关推荐

    Java实现FTP文件上传和下载

    以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。 首先,Java通过`java.net`和`javax.net`包提供了FTP功能,但这些原生API并不易用。因此,大多数开发人员会使用第三方库如Apache...

    java实现Ftp批量下载文件及解压

    以上就是使用Java实现FTP批量下载文件及解压的主要步骤。这个过程涵盖了FTP连接、文件操作和压缩/解压缩技术,是Java中常见的文件处理任务。在实际应用中,还需要考虑错误处理、线程安全以及可能的性能优化。

    Java上传下载ftp上的文件

    本文将深入探讨如何使用Java实现FTP文件的上传和下载功能,以满足标题和描述中的需求。作者宋海康提供的案例将为我们提供一个基础,帮助我们理解这个过程。 首先,我们需要导入Java FTP库,通常是`commons-net`库,...

    Java实现FTP批量大文件上传下载

    本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成基于 Web 的批量、大文件的上传下载...

    Java解析FTP服务器文本文件

    Java解析FTP服务器文本文件是指使用Java语言连接FTP服务器,上传、下载、递归目录遍历等基本操作的集合。在这个过程中,我们需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar、antlr.jar、commons-...

    java SSH FTP下载文件

    本篇文章将深入探讨如何使用Java通过SSH和FTP协议来实现从服务器下载文件到本地的操作。 首先,对于SSH连接,Java中通常使用JSch库。JSch是一个纯Java实现的SSH2库,它可以让你连接到一个SSH服务器,执行命令,以及...

    Java实现FTP批量大文件上传下载.pdf

    Java实现FTP批量大文件上传下载需要选择合适的FTP客户端库,例如J-FTP,并使用Java Applet实现基于Web的FTP客户端。需要考虑安全性问题,例如数字签名、数据加密等。同时,需要选择合适的FTP服务器端程序,例如Serv-...

    java使用FTP上传文件

    java使用FTP上传文件,非常实用 包括创建ftp链接,上传

    JAVA获取FTP文件列表

    ### JAVA获取FTP文件列表知识点详解 #### 一、概述 在现代软件开发中,FTP(File Transfer Protocol)是一种广泛使用的协议,用于在网络上进行文件传输。本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`...

    java ftp上传 下载 文件压缩解压

    这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...

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

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

    java登录FTP下载文件,支持断点下载

    在Java编程环境中,FTP(File Transfer Protocol)文件下载是一个常见的任务,特别是在处理大量数据传输时。本场景中,我们关注的重点是如何实现一个功能完善的FTP下载工具,它支持断点续传,即当下载中断后可以从...

    java 连接 FTP 文件操作(上传,下载,删除,复制

    本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 首先,Java通过`java.net`和`javax.net`包提供了FTP客户端的功能。主要依赖于`java.net....

    java写的ftp下载上传定时监控

    本篇文章将深入探讨如何使用Java进行FTP文件传输,并涉及自动解压和压缩的功能。 首先,让我们关注Java中的FTP客户端实现。Apache Commons Net是Java开发中常用的FTP客户端库,它提供了一套完整的API来处理FTP任务...

    JAVA实现ftp上传,下载

    在Java中实现FTP上传和下载,我们可以利用Apache Commons Net库,它提供了一系列的FTP客户端API,方便我们进行文件操作。以下是对这个主题的详细讲解: 一、Apache Commons Net库介绍 Apache Commons Net是Apache...

    java下载ftp文件.txt

    ### Java下载FTP文件 在实际应用开发中,经常需要与FTP服务器进行交互,比如上传文件、下载文件等操作。Java提供了一套强大的工具和API来实现这些功能。下面我们将通过一个具体的示例来了解如何用Java实现从FTP...

    JAVA实现FTP下载

    以上步骤详细阐述了如何使用Java实现FTP下载,结合Oracle数据库获取文件地址。在实际应用中,可能还需要处理异常、优化性能、重试机制等复杂情况。对于大型项目,可以考虑使用Spring框架提供的FTP支持,这样可以更...

    java 从ftp服务器下载文件

    对于Java开发者而言,掌握如何利用Java进行FTP文件操作是一项基本技能。 #### 一、FTP简介 FTP是一种用于在网络上进行文件传输的应用层协议。它基于客户/服务器模型,通过TCP/IP连接来实现文件的上传和下载。FTP...

    Java FTP 指定下载文件和上传文件到指定的服务器目录

    在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...

    使用java实现的linux和ftp服务器文件上传下载工具

    这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...

Global site tag (gtag.js) - Google Analytics