首页 > 技术文章 > JSCH实现文件上传的代码实例

muliu 2016-12-02 17:31 原文

package com.vcredit.ddcash.monitor.sendmail;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Vector;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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;

/**
* created by ding 2016-12-02 17:28 Friday
* */
public class FtpsFileList {
private static final Logger LOG = LoggerFactory.getLogger(FtpsFileList.class);

public static void main(String[] args) {
listFileNames("****","**", "root", "}KCxBZC6IO]hWC>CfDkgD<41WhTP(", "/usr");

}

private static List<String> listFileNames(String host, int port, String username, final String password,
String dir) {
List<String> list = new ArrayList<String>();
ChannelSftp sftp = null;
Channel channel = null;
Session sshSession = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
sshSession = jsch.getSession(username, host, port);
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
LOG.debug("Session connected!");
channel = sshSession.openChannel("sftp");
channel.connect();
LOG.debug("Channel connected!");
sftp = (ChannelSftp) channel;
// 文件上传 下面这种方式也可以
// File file = new File("15888888_back_cut.jpg");
// file.getAbsolutePath();
// if (!file.exists()){
// file.createNewFile();
// }
// FileInputStream in = new FileInputStream(file);
// sftp.put(in, "/usr/local/ding/15888888_back_cut.jpg1");

// sftp.put(src, dst);//src本地文件,dst 服务器上的文件
sftp.put("15888888_back_cut.jpg", "/usr/local/ding/");
// 文件下载
sftp.cd("/usr/local/ding/");
// sftp.get(src, dst); src为服务器上的文件,dst问本地的目录,如果只是路径 ,默认文件名一致
sftp.get("/usr/local/ding/15888888_back_cut.jpg", "D:/");

Vector<?> vector = sftp.ls(dir);
for (Object item : vector) {
LsEntry entry = (LsEntry) item;
System.out.println(entry.getFilename());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeChannel(sftp);
closeChannel(channel);
closeSession(sshSession);
}
return list;
}

private static void closeChannel(Channel channel) {
if (channel != null) {
if (channel.isConnected()) {
channel.disconnect();
}
}
}

private static void closeSession(Session session) {
if (session != null) {
if (session.isConnected()) {
session.disconnect();
}
}
}
}

推荐阅读