Java FTP获取文件到指定目录

概述

在Java中,我们可以使用FTP协议来实现文件的传输。本文将教你如何使用Java来获取FTP服务器上的文件并保存到本地指定目录。

步骤

首先,我们来看一下整个流程:

步骤 描述
1 连接FTP服务器
2 登录FTP服务器
3 进入指定目录
4 获取文件
5 关闭连接

接下来,我们逐步介绍每个步骤需要做什么,并提供相应的代码和注释。

1. 连接FTP服务器

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

public class FTPExample {
    public static void main(String[] args) {
        // 创建一个FTPClient对象
        FTPClient ftpClient = new FTPClient();
        
        try {
            // 连接到FTP服务器
            ftpClient.connect("ftp.example.com", 21);
            
            // 打印连接状态
            System.out.println("Connected: " + ftpClient.isConnected());
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace();
        }
    }
}

引用:我们使用Apache Commons Net库中的FTPClient类来连接FTP服务器。首先,我们创建一个FTPClient对象,然后使用connect方法连接到指定的FTP服务器。连接成功后,我们可以通过isConnected方法检查连接状态。

2. 登录FTP服务器

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

public class FTPExample {
    public static void main(String[] args) {
        // 创建一个FTPClient对象
        FTPClient ftpClient = new FTPClient();
        
        try {
            // 连接到FTP服务器
            ftpClient.connect("ftp.example.com", 21);
            
            // 登录到FTP服务器
            ftpClient.login("username", "password");
            
            // 打印登录状态
            System.out.println("Logged in: " + ftpClient.login());
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace();
        }
    }
}

引用:使用login方法来登录到FTP服务器。传入用户名和密码作为参数。登录成功后,我们可以通过login方法返回的布尔值来检查登录状态。

3. 进入指定目录

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

public class FTPExample {
    public static void main(String[] args) {
        // 创建一个FTPClient对象
        FTPClient ftpClient = new FTPClient();
        
        try {
            // 连接到FTP服务器
            ftpClient.connect("ftp.example.com", 21);
            
            // 登录到FTP服务器
            ftpClient.login("username", "password");
            
            // 进入指定目录
            ftpClient.changeWorkingDirectory("/path/to/directory");
            
            // 打印当前工作目录
            System.out.println("Current directory: " + ftpClient.printWorkingDirectory());
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace();
        }
    }
}

引用:使用changeWorkingDirectory方法来进入指定的目录。传入目录路径作为参数。进入成功后,我们可以通过printWorkingDirectory方法打印当前工作目录。

4. 获取文件

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

public class FTPExample {
    public static void main(String[] args) {
        // 创建一个FTPClient对象
        FTPClient ftpClient = new FTPClient();
        
        try {
            // 连接到FTP服务器
            ftpClient.connect("ftp.example.com", 21);
            
            // 登录到FTP服务器
            ftpClient.login("username", "password");
            
            // 进入指定目录
            ftpClient.changeWorkingDirectory("/path/to/directory");
            
            // 获取文件
            InputStream inputStream = ftpClient.retrieveFileStream("filename.txt");
            
            // 保存文件到本地
            FileOutputStream fileOutputStream = new FileOutputStream("localPath/filename.txt");
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                fileOutputStream.write(buffer, 0, bytesRead);
            }
            
            // 关闭输入输出流
            inputStream.close();
            fileOutputStream.close();
            
            // 完成文件获取
            ftpClient.completePendingCommand();
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace