Java中使用sftp进行文件上传与下载
最近项目中使用sftp进行文件上传与下载,特意写一篇文章用来作为例子参考:
注:项目的pom文件里面需要加上依赖包:
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.51</version>
</dependency>
package com.leo.common.util;
import java.io.File;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
import java.util.Vector;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;
import com.leo.common.logger.LoggerUtil;
import com.leo.common.logger.LoggerUtil.Level;
public class SFtpApload {
/**
* url 服务器地址
* port 端口号
* username 服务器用户名
* password 服务器密码
* path 上传文件在服务器上的路径
* filename 上传的文件名称
* input 待上传内容的流
*/
public static boolean uploadFile(String url, int port, String username,
String password, String path, String filename, InputStream input) {
try {
ChannelSftp sftp = connect(url, port, username, password);
upload(sftp, path, filename, input);
disconnect(sftp);
} catch (Exception e) {
LoggerUtil.log(Level.ERROR, e, "upload file failed file={0}",
filename);
return false;
}
LoggerUtil.log(Level.DEBUG, "upload file success file={0}", filename);
return true;
}
public