JAVA SFTP文件上传、下载及批量下载实例是一项非常常见的开发需求,下面就为大家介绍一下如何完成这个任务。
一、引入依赖库
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
以上是需要引入的JSch依赖库,它是Java Secure Channel的简称,是一个用于在Java中进行SSH连接的库。
二、上传单个文件
以下代码示例演示了如何将本地文件上传到SFTP服务器上:
public void uploadFile(String localPath, String remotePath) throws JSchException, SftpException {
JSch jSch = new JSch();
// 建立SSH连接
Session session = jSch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 建立SFTP连接
ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");
sftp.connect();
// 本地文件路径
String fileName = localPath.substring(localPath.lastIndexOf(File.separator) + 1);
// 上传本地文件
sftp.put(localPath, remotePath + "/" + fileName);
// 关闭连接
sftp.disconnect();
session.disconnect();
}
以上代码中,使用JSch建立SSH连接和ChannelSftp建立SFTP连接,通过put方法将本地文件上传到SFTP服务器对应路径下。
三、下载单个文件
以下代码示例演示了如何将SFTP服务器上的文件下载到本地磁盘:
public void downloadFile(String remotePath, String localPath) throws JSchException, SftpException, IOException {
JSch jSch = new JSch();
// 建立SSH连接
Session session = jSch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 建立SFTP连接
ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");
sftp.connect();
// SFTP服务器上的文件名
String fileName = remotePath.substring(remotePath.lastIndexOf("/") + 1);
// 下载文件
sftp.get(remotePath, localPath + "/" + fileName);
// 关闭连接
sftp.disconnect();
session.disconnect();
}
以上代码中,通过get方法将SFTP服务器上的文件下载到本地对应路径下。
四、批量下载文件
以下代码示例演示了如何批量下载SFTP服务器上的多个文件到本地磁盘:
public void batchDownloadFiles(String remotePath, String localPath) throws JSchException, SftpException, IOException {
JSch jSch = new JSch();
// 建立SSH连接
Session session = jSch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 建立SFTP连接
ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");
sftp.connect();
// 获取SFTP服务器上指定路径下的所有文件
@SuppressWarnings("unchecked")
Vector<ChannelSftp.LsEntry> fileList = sftp.ls(remotePath);
// 遍历所有文件并下载到本地磁盘
for (ChannelSftp.LsEntry file : fileList) {
String fileName = file.getFilename();
if (!fileName.equals(".") && !fileName.equals("..")) {
sftp.get(remotePath + "/" + fileName, localPath + "/" + fileName);
}
}
// 关闭连接
sftp.disconnect();
session.disconnect();
}
以上代码中,使用ls函数获取SFTP服务器上指定路径下的所有文件列表,然后遍历列表并调用get函数将文件下载到本地对应路径下。
以上就是“JAVA SFTP文件上传、下载及批量下载实例”的完整攻略,希望对开发者的工作有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA SFTP文件上传、下载及批量下载实例 - Python技术站