Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java ftp批量下载文件


在 Java 中批量下载 FTP 服务器上的文件有多种方式,其中一些常见的方式包括使用 Apache Commons Net 库和使用 Java 的内置类库。下面我将介绍两种不同的方法,并提供相关的示例代码以及 Maven 和 Gradle 的依赖坐标。

方法 1: 使用 Apache Commons Net 库

Apache Commons Net 库是一个常用的 Java 库,用于处理网络协议,包括 FTP。以下是使用 Apache Commons Net 库来批量下载 FTP 文件的步骤:

添加 Apache Commons Net 库的依赖:

Maven 依赖坐标:

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.8.0</version> <!-- 版本号可能会有更新 -->
</dependency>

Gradle 依赖坐标:

implementation group: 'commons-net', name: 'commons-net', version: '3.8.0'

创建 Java 代码来下载 FTP 文件:

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import java.io.FileOutputStream;
import java.io.IOException;

public class FTPBatchDownload {

    public static void main(String[] args) {
        String server = "ftp.example.com";
        int port = 21;
        String user = "username";
        String pass = "password";
        String remoteDir = "/path/to/remote/directory/";
        String localDir = "/path/to/local/directory/";

        try {
            FTPClient ftpClient = new FTPClient();
            ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

            String[] fileNames = ftpClient.listNames(remoteDir);
            if (fileNames != null) {
                for (String fileName : fileNames) {
                    String remoteFilePath = remoteDir + fileName;
                    String localFilePath = localDir + fileName;

                    try (FileOutputStream fos = new FileOutputStream(localFilePath)) {
                        if (ftpClient.retrieveFile(remoteFilePath, fos)) {
                            System.out.println("Downloaded: " + fileName);
                        } else {
                            System.err.println("Failed to download: " + fileName);
                        }
                    }
                }
            }

            ftpClient.logout();
            ftpClient.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个示例代码连接到 FTP 服务器,登录,列出远程目录中的文件,然后逐个下载它们到本地目录。

方法 2: 使用 Java 内置的 URLConnection

另一种方法是使用 Java 内置的 URLConnection 来下载 FTP 文件。这个方法不需要额外的依赖库,但相对来说更复杂一些。以下是步骤:

创建 Java 代码来下载 FTP 文件:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class FTPBatchDownload {

    public static void main(String[] args) {
        String server = "ftp://username:password@ftp.example.com/path/to/remote/directory/";
        String localDir = "/path/to/local/directory/";

        try {
            URL url = new URL(server);
            URLConnection connection = url.openConnection();
            InputStream inputStream = connection.getInputStream();

            String[] parts = server.split("/");
            String fileName = parts[parts.length - 1];
            String localFilePath = localDir + fileName;

            try (FileOutputStream fos = new FileOutputStream(localFilePath)) {
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    fos.write(buffer, 0, bytesRead);
                }
                System.out.println("Downloaded: " + fileName);
            }

            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个示例代码使用 URLConnection 连接到 FTP 服务器,并将文件下载到本地目录。需要注意的是,FTP 服务器的 URL 中包括用户名和密码。

使用哪种方法取决于您的需求和项目的依赖。如果您需要更多的 FTP 操作和更好的性能,Apache Commons Net 库可能是更好的选择。如果您想保持依赖较少,使用 Java 内置的 URLConnection 也是一个有效的选择。

我将为你介绍两种常用的方法:使用ApacheCommonsNet库和使用JDK内置的FTP相关类。步骤流程:添加Maven依赖:编写代码:# ...
在Java中进行文件下载有多种方式,其中一些主要的方式包括使用Java标准库(java.示例代码:###使用ApacheHttpClient ...
下面我将介绍三种常见的方法:使用Java标准库的URLConnection,使用ApacheHttpClient库,以及使用Java的NIO ...
以下是三种常见的实现方式,包括步骤流程、Maven和Gradle的依赖坐标以及示例代码:###使用ApacheCommonsNet库Apac ...
###使用ApacheCommonsNet库ApacheCommonsNet是一个常用的Java库,它提供了FTP客户端的功能。步骤流程:添 ...