java接口 FTPClient下载服务器上的 .exe可执行文件,并且不改变文件类型
时间: 2024-04-06 17:31:34 浏览: 49
好的,您可以使用Apache Commons Net库中的FTPClient类来完成这个任务。以下是一个示例代码,可以下载服务器上的.exe文件并保持它的原始文件类型:
```java
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public class FTPDownload {
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/file.exe";
String localFilePath = "/path/to/local/file.exe";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
ftpClient.login(username, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置传输文件类型为二进制
ftpClient.enterLocalPassiveMode(); // 设置被动模式
File localFile = new File(localFilePath);
OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(localFile));
boolean success = ftpClient.retrieveFile(remoteFilePath, outputStream);
outputStream.close();
if (success) {
System.out.println("文件下载成功!");
} else {
System.out.println("文件下载失败!");
}
ftpClient.logout();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
在这个例子中,我们设置了传输文件类型为二进制,以确保文件下载后不会被改变。同时,我们还设置了被动模式,以便与防火墙等网络设备兼容。最后,我们使用retrieveFile()方法从服务器上下载文件,并将其保存到本地文件中。
阅读全文