在 Java 中,您可以使用多种方式来下载 FTP 服务器上的文件到本地。以下是三种常见的实现方式,包括步骤流程、Maven 和 Gradle 的依赖坐标以及示例代码:
Apache Commons Net 库是一个流行的 Java 库,用于处理网络协议,包括 FTP。以下是使用 Apache Commons Net 库下载 FTP 文件的步骤:
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'
示例代码:
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import java.io.FileOutputStream;
import java.io.IOException;
public class FTPDownloader {
public static void main(String[] args) {
String server = "ftp.example.com";
int port = 21;
String username = "your_username";
String password = "your_password";
String remoteFilePath = "/path/to/remote/file.txt";
String localFilePath = "/path/to/local/file.txt";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
ftpClient.login(username, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
FileOutputStream fos = new FileOutputStream(localFilePath);
boolean success = ftpClient.retrieveFile(remoteFilePath, fos);
fos.close();
if (success) {
System.out.println("File downloaded successfully!");
} else {
System.out.println("Failed to download file.");
}
ftpClient.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Java 自带了 FTP 支持,您可以使用 java.net.URL
和 java.io
包来下载 FTP 文件。这种方法不需要额外的依赖。
示例代码:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class FTPDownloader {
public static void main(String[] args) {
String ftpUrl = "ftp://username:password@ftp.example.com/path/to/remote/file.txt";
String localFilePath = "/path/to/local/file.txt";
try (InputStream inputStream = new URL(ftpUrl).openStream();
FileOutputStream outputStream = new FileOutputStream(localFilePath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
System.out.println("File downloaded successfully!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("Failed to download file.");
}
}
}
FTP4J 是一个纯 Java 实现的 FTP 客户端库。以下是使用 FTP4J 下载 FTP 文件的步骤:
Maven 依赖:
<dependency>
<groupId>it.sauronsoftware.ftp4j</groupId>
<artifactId>ftp4j</artifactId>
<version>1.7.2</version>
</dependency>
Gradle 依赖:
implementation group: 'it.sauronsoftware.ftp4j', name: 'ftp4j', version: '1.7.2'
示例代码:
import it.sauronsoftware.ftp4j.FTPClient;
public class FTPDownloader {
public static void main(String[] args) {
String server = "ftp.example.com";
String username = "your_username";
String password = "your_password";
String remoteFilePath = "/path/to/remote/file.txt";
String localFilePath = "/path/to/local/file.txt";
FTPClient client = new FTPClient();
try {
client.connect(server);
client.login(username, password);
client.download(remoteFilePath, new java.io.File(localFilePath));
System.out.println("File downloaded successfully!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Failed to download file.");
} finally {
try {
client.disconnect(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这些是在 Java 中下载 FTP 文件的三种常见方式。您可以根据自己的需求选择其中一种,并根据示例代码进行自定义。确保替换示例中的 FTP 服务器信息、用户名、密码以及文件路径信息。