java操作ftp下载文件示例


在Java中,操作FTP以下载文件通常可以通过使用Apache Commons Net库来实现。以下是一个简单的示例,展示了如何使用Apache Commons Net库来连接到FTP服务器并下载一个文件。

首先,确保你的项目中已经包含了Apache Commons Net的依赖。如果你使用Maven,可以在`pom.xml`中添加如下依赖:


<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.8.0</version> <!-- 请检查是否有更新的版本 -->
</dependency>

然后,你可以使用以下Java代码来下载FTP服务器上的文件:


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

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

public class FtpDownloadExample {

    public static void main(String[] args) {
        String server = "ftp.example.com";
        int port = 21;
        String user = "username";
        String pass = "password";

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

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

            String remoteFile = "/path/to/remote/file.txt";
            String downloadFile = "C:/path/to/local/file.txt";

            OutputStream outputStream = new FileOutputStream(downloadFile);
            boolean success = ftpClient.retrieveFile(remoteFile, outputStream);
            outputStream.close();

            if (success) {
                System.out.println("File has been downloaded successfully.");
            }

        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

这段代码首先创建了一个`FTPClient`实例,并尝试连接到FTP服务器。连接成功后,它使用提供的用户名和密码登录。然后,它切换到被动模式(这通常是推荐的做法,因为它可以绕过某些防火墙和NAT问题)。之后,它指定了要下载的远程文件路径和本地保存路径,并使用`retrieveFile`方法下载文件。最后,它检查下载是否成功,并在完成后关闭FTP连接。

请注意,你需要将`server`、`port`、`user`、`pass`、`remoteFile`和`downloadFile`变量的值替换为你自己的FTP服务器信息和文件路径。