Java读取SFTP/FTP工具类
引言
在Java开发中,我们经常需要与远程服务器进行文件传输。SFTP(SSH File Transfer Protocol)和FTP(File Transfer Protocol)是两种常用的文件传输协议。本文将介绍如何使用Java读取SFTP和FTP的工具类,并提供相应的代码示例。
SFTP工具类
SFTP是通过SSH协议进行文件传输的一种安全的协议。在Java中,我们可以使用JSch库来实现SFTP操作。下面是一个简单的SFTP工具类的代码示例:
import com.jcraft.jsch.*;
public class SFTPUtils {
private String host;
private int port;
private String username;
private String password;
private ChannelSftp channelSftp;
private Session session;
public SFTPUtils(String host, int port, String username, String password) {
this.host = host;
this.port = port;
this.username = username;
this.password = password;
}
public void connect() throws JSchException {
JSch jsch = new JSch();
session = jsch.getSession(username, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
}
public void download(String remoteFilePath, String localFilePath) throws SftpException {
channelSftp.get(remoteFilePath, localFilePath);
}
public void disconnect() {
channelSftp.disconnect();
session.disconnect();
}
}
上述代码中,我们通过JSch库创建了一个SFTP连接,通过connect
方法连接到SFTP服务器,通过download
方法下载远程文件,并通过disconnect
方法断开连接。
FTP工具类
FTP是最常见的一种文件传输协议,在Java中,我们可以使用Apache Commons Net库来实现FTP操作。下面是一个简单的FTP工具类的代码示例:
import org.apache.commons.net.ftp.*;
import java.io.*;
public class FTPUtils {
private String host;
private int port;
private String username;
private String password;
private FTPClient ftpClient;
public FTPUtils(String host, int port, String username, String password) {
this.host = host;
this.port = port;
this.username = username;
this.password = password;
}
public void connect() throws IOException {
ftpClient = new FTPClient();
ftpClient.connect(host, port);
ftpClient.login(username, password);
ftpClient.enterLocalPassiveMode();
}
public void download(String remoteFilePath, String localFilePath) throws IOException {
FileOutputStream outputStream = new FileOutputStream(new File(localFilePath));
ftpClient.retrieveFile(remoteFilePath, outputStream);
outputStream.close();
}
public void disconnect() throws IOException {
ftpClient.logout();
ftpClient.disconnect();
}
}
上述代码中,我们通过Apache Commons Net库创建了一个FTP连接,通过connect
方法连接到FTP服务器,通过download
方法下载远程文件,并通过disconnect
方法断开连接。
使用示例
下面是使用以上工具类的示例代码:
public class Main {
public static void main(String[] args) throws Exception {
// 使用SFTP工具类下载远程文件
SFTPUtils sftpUtils = new SFTPUtils("hostname", 22, "username", "password");
sftpUtils.connect();
sftpUtils.download("/path/to/remote/file", "/path/to/local/file");
sftpUtils.disconnect();
// 使用FTP工具类下载远程文件
FTPUtils ftpUtils = new FTPUtils("hostname", 21, "username", "password");
ftpUtils.connect();
ftpUtils.download("/path/to/remote/file", "/path/to/local/file");
ftpUtils.disconnect();
}
}
在上述代码中,我们首先创建了一个SFTPUtils对象,并通过connect
方法连接到SFTP服务器,然后通过download
方法下载远程文件,最后通过disconnect
方法断开连接。同样的,我们也创建了一个FTPUtils对象,并进行相同的操作。
结论
本文介绍了如何使用Java读取SFTP和FTP的工具类,并提供了相应的代码示例。通过这些工具类,我们可以方便地实现与远程服务器的文件传输操作。