java服务器间文件传输,java实现在多服务器之间的文件传输(Jsch)

java实现在多服务器之间的文件传输(Jsch)

JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。

我主要是今天完成个分布式架构下获取其他服务器文件流的功能,顺便记一下。这个还是很简单的。

我用的是1.54版本,就这个版本用的人最多。这是地址: https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.54

关于咋用,看下面代码,必要的注释都写了。其实也就是指定好地址、端口号、账户密码,连上然后就可以操作了。

package com.skypyb.util;

import com.jcraft.jsch.*;

import java.io.File;

import java.io.InputStream;

import java.util.Properties;

public class JschFTPFile {

private static Channel channel = null;

public static String getPath(String filesPath,String fileName) {

String separator = File.separator;//系统的分割符

String fileName = new StringBuffer(filesPath)

.append(separator)

.append(fileName).toString();

return fileName;

}

public static InputStream getTaskFile(String path) {

InputStream download = null;

try {

Channel channel = getChannel();

download = download(path, (ChannelSftp) channel);

} catch (JSchException e) {

e.printStackTrace();

} catch (SftpException e) {

e.printStackTrace();

}

return download;

}

private static Channel getChannel() throws JSchException {

if (channel != null) return channel;

//声明JSCH对象

JSch jSch = new JSch();

//获取一个Linux会话

Session session = jSch.getSession("root", "127.0.0.1", 22);

//设置登录密码

session.setPassword("614");

//关闭key的检验

Properties sshConfig = new Properties();

sshConfig.put("StrictHostKeyChecking", "no");

session.setConfig(sshConfig);

//连接Linux

session.connect();

//通过sftp的方式连接

ChannelSftp ch = (ChannelSftp) session.openChannel("sftp");

ch.connect();

channel = ch;

return channel;

}

public static InputStream download(String downloadFile, ChannelSftp sftp) throws SftpException {

InputStream inputStream = sftp.get(downloadFile);

return inputStream;

}

}