/*** 将文件上传到服务器
*
*@paramfilePath
* 文件路径
*@paramchannelSftp
* channelSftp对象
*@return
*/
public static booleanuploadFile(String filePath, ChannelSftp channelSftp) {
OutputStream outstream= null;
InputStream instream= null;boolean successFlag = false;try{
File isfile= newFile(filePath);if(isfile.isFile()) {
outstream=channelSftp.put(isfile.getName());
File file= newFile(filePath);if(file.exists()) {
instream= newFileInputStream(file);byte b[] = new byte[1024];intn;while ((n = instream.read(b)) != -1) {
outstream.write(b,0, n);
}
outstream.flush();
}
successFlag= true;
}
}catch(Exception e) {
e.printStackTrace();
}finally{try{if (instream != null) {
instream.close();
}if (outstream != null) {
outstream.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}returnsuccessFlag;
}private staticSession initJschSession()throwsJSchException {int ftpPort = 0;
String ftpHost= "";
String port= "00"; //sftp的端口号
String ftpUserName = ""; //用户名
String ftpPassword = ""; //链接的密码
String privateKey = ""; // String passphrase = "";if (port != null && !port.equals("")) {
ftpPort=Integer.valueOf(port);
}
JSch jsch= new JSch(); //创建JSch对象
if(StringUtils.isNotBlank(privateKey)&&StringUtils.isNotBlank(passphrase)) {
jsch.addIdentity(privateKey, passphrase);
}if(StringUtils.isNotBlank(privateKey)&&StringUtils.isBlank(passphrase)) {
jsch.addIdentity(privateKey);
}
jsch.getSession(ftpUserName, ftpHost, ftpPort);
Session session= jsch.getSession(ftpUserName, ftpHost, ftpPort); //根据用户名,主机ip,端口获取一个Session对象
if(StringUtils.isNotBlank(ftpPassword)) {
session.setPassword(ftpPassword);//设置密码
}returnsession;
}/*** 获取ChannelSftp链接
*
*@paramtimeout
* 超时时间
*@return返回ChannelSftp对象
*@throwsJSchException*/
public static ChannelSftp getChannelSftp(Session session, inttimeout)throwsJSchException {
Channel channel= null;
Properties config= newProperties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);//为Session对象设置properties
session.setTimeout(timeout); //设置timeout时间
session.connect(); //通过Session建立链接
channel= session.openChannel("sftp"); //打开SFTP通道
channel.connect(); //建立SFTP通道的连接
return(ChannelSftp) channel;
}/*** 断开sftp链接
*
*@paramsession
* 会话
*@paramchannel
* 通道*/
public static voidcloseConnection(Channel channel, Session session) {try{if (session != null) {
session.disconnect();//关闭session链接
}if (channel != null) {
channel.disconnect();//断开连接
}
}catch(Exception e) {
e.printStackTrace();
}
}