java使用sftp批量上传文件完整代码
时间: 2023-09-22 21:09:48 浏览: 251
JAVA SFTP文件上传、下载及批量下载实例
以下是使用JSch库实现Java SFTP批量上传文件的完整代码:
```
import com.jcraft.jsch.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Properties;
public class SftpBatchUpload {
private static final String HOST = "sftp.example.com"; // SFTP服务器地址
private static final int PORT = 22; // SFTP服务器端口号
private static final String USERNAME = "username"; // SFTP服务器登录用户名
private static final String PASSWORD = "password"; // SFTP服务器登录密码
private static final String REMOTE_PATH = "/upload/"; // SFTP服务器上传文件路径
public static void main(String[] args) {
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
// 创建SFTP会话
session = jsch.getSession(USERNAME, HOST, PORT);
session.setPassword(PASSWORD);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channelSftp = (ChannelSftp) session.openChannel("sftp");
channelSftp.connect();
// 批量上传文件
String localPath = "C:\\local\\path\\"; // 本地文件路径
File localDir = new File(localPath);
File[] localFiles = localDir.listFiles();
for (File localFile : localFiles) {
if (localFile.isFile()) {
String remoteFile = localFile.getName();
channelSftp.put(new FileInputStream(localFile), REMOTE_PATH + remoteFile);
System.out.println("上传文件" + localFile.getAbsolutePath() + "到" + REMOTE_PATH + remoteFile + "成功!");
}
}
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭SFTP连接和会话
if (channelSftp != null) {
channelSftp.disconnect();
}
if (session != null) {
session.disconnect();
}
}
}
}
```
其中,需要替换的常量有:
- HOST:SFTP服务器地址
- PORT:SFTP服务器端口号
- USERNAME:SFTP服务器登录用户名
- PASSWORD:SFTP服务器登录密码
- REMOTE_PATH:SFTP服务器上传文件路径
代码中的批量上传文件逻辑是,将本地路径为C:\local\path\下的所有文件上传到SFTP服务器的REMOTE_PATH路径下。如果需要更改本地文件路径或者上传文件的后缀名等属性,可以根据实际需求进行修改。
阅读全文