近来应需求需要,做了服务器之间的文件传输,利用的ssh协议。查阅各种资料博客,基本都是下载文件的方法,找不到下载文件夹得方法。思索多日写了一个下载文件夹的简单方法,可能步骤繁琐,优化不大好。由于jsch不能得到服务器端文件的绝对路径,目前还没能想出怎么遍历下载文件夹和文件。只好利用ssh2 jar包的session方法操作Linux命令实现下载。话不多说,直接上代码。
一:导入的jar包,jar包在Apache可以自己下载
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ResourceBundle;
import java.util.zip.GZIPInputStream;
import org.apache.tools.tar.TarEntry;
import org.apache.tools.tar.TarInputStream;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
二:类和方法
/**
*
* @param dataServerIp 服务器IP
* @param dataServerUsername 服务器用户名
* @param dataServerPassword 服务器登录密码
* @param srcFile 要下载的文件路径
* @param saveFile 保存路径
* @param port 端口号,null时为默认端口
*/
public static void downLoadFile(String dataServerIp,String dataServerUsername,String dataServerPassword,String srcFile,String saveFile,int port){
Connection conn = new Connection(dataServerIp);
Session session = null;
SCPClient client =null;
//session=(Session) getObject(dataServerIp, dataServerUsername, dataServerPassword, 0, "session");
//client=(SCPClient) getObject(dataServerIp, dataServerUsername, dataServerPassword, 0, "client");
conn=getConn(dataServerIp, dataServerUsername, dataServerPassword, 22);
try {
session=conn.openSession();
client=conn.createSCPClient();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
boolean fl