在 Java 中,你可以使用多种方式来实现 FTP 文件下载。我将为你介绍两种常用的方法:使用 Apache Commons Net 库和使用 JDK 内置的 FTP 相关类。
Apache Commons Net 是一个常用的网络操作库,它提供了许多网络协议的实现,包括 FTP。
步骤流程:
添加 Maven 依赖:
<!-- Maven 依赖 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
编写代码:
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import java.io.FileOutputStream;
import java.io.IOException;
public class FtpDownloadExample {
public static void main(String[] args) {
String server = "ftp.example.com";
int port = 21;
String user = "username";
String password = "password";
String remoteFilePath = "/path/to/remote/file.txt";
String localFilePath = "local/file.txt";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
FileOutputStream outputStream = new FileOutputStream(localFilePath);
boolean success = ftpClient.retrieveFile(remoteFilePath, outputStream);
outputStream.close();
if (success) {
System.out.println("File downloaded successfully.");
} else {
System.out.println("File download failed.");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Java 的标准库中也提供了一些用于 FTP 操作的类,例如 URLConnection
和 URL
。
步骤流程:
编写代码:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class FtpDownloadUsingURL {
public static void main(String[] args) {
String ftpUrl = "ftp://username:password@ftp.example.com/path/to/remote/file.txt";
String localFilePath = "local/file.txt";
try {
URL url = new URL(ftpUrl);
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream(localFilePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
System.out.println("File downloaded successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
请注意,第二种方法依赖于 Java 标准库,因此不需要添加额外的依赖。根据你的需求和项目配置,选择适合你的方式。在实际应用中,你需要替换示例代码中的服务器、用户名、密码、文件路径等信息。