- package com.ikea.utils;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.util.Properties;
- import java.util.Vector;
- import com.jcraft.jsch.Channel;
- import com.jcraft.jsch.ChannelSftp;
- import com.jcraft.jsch.JSch;
- import com.jcraft.jsch.Session;
- import com.jcraft.jsch.SftpException;
- import com.jcraft.jsch.ChannelSftp.LsEntry;
- public class SFTPUtils {
- /**
- * 连接sftp服务器
- *
- * @param host
- * 主机
- * @param port
- * 端口
- * @param username
- * 用户名
- * @param password
- * 密码
- * @return
- */
- public ChannelSftp connect(String host, int port, String username,
- String password) {
- ChannelSftp sftp = null;
- try {
- JSch jsch = new JSch();
- jsch.getSession(username, host, port);
- Session sshSession = jsch.getSession(username, host, port);
- System.out.println("Session created.");
- sshSession.setPassword(password);
- Properties sshConfig = new Properties();
- sshConfig.put("StrictHostKeyChecking", "no");
- sshSession.setConfig(sshConfig);
- sshSession.connect();
- System.out.println("Session connected.");
- System.out.println("Opening Channel.");
- Channel channel = sshSession.openChannel("sftp");
- channel.connect();
- sftp = (ChannelSftp) channel;
- // sshSession.disconnect();
- System.out.println("Connected to " + host + ".");
- } catch (Exception e) {
- }
- return sftp;
- }
- /**
- * 上传文件
- *
- * @param directory
- * 上传的目录
- * @param uploadFile
- * 要上传的文件
- * @param sftp
- */
- public void upload(String directory, String uploadFile, ChannelSftp sftp) {
- try {
- sftp.cd(directory);
- File file = new File(uploadFile);
- sftp.put(new FileInputStream(file), file.getName());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 下载文件
- *
- * @param directory
- * 下载目录
- * @param downloadFile
- * 下载的文件
- * @param saveFile
- * 存在本地的路径
- * @param sftp
- */
- public void download(String directory, String downloadFile,
- String saveFile, ChannelSftp sftp) {
- try {
- sftp.cd(directory);
- File file = new File(saveFile);
- sftp.get(downloadFile, new FileOutputStream(file));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 删除文件
- *
- * @param directory
- * 要删除文件所在目录
- * @param deleteFile
- * 要删除的文件
- * @param sftp
- */
- public void delete(String directory, String deleteFile, ChannelSftp sftp) {
- try {
- sftp.cd(directory);
- sftp.rm(deleteFile);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 列出目录下的文件
- *
- * @param directory
- * 要列出的目录
- * @param sftp
- * @return
- * @throws SftpException
- */
- public Vector<LsEntry> listFiles(String directory, ChannelSftp sftp)
- throws SftpException {
- return sftp.ls(directory);
- }
- public static void main(String[] args) {
- SFTPUtils sf = new SFTPUtils();
- String host = "******";
- int port = 22;
- String username = "****";
- String password = "****";
- String directory = "/****/";
- String saveFile = "";
- String downLoadDirectory = "D:\\";
- ChannelSftp sftp = null;
- Session sshSession = null;
- try {
- JSch jsch = new JSch();
- jsch.getSession(username, host, port);
- sshSession = jsch.getSession(username, host, port);
- System.out.println("Session created.");
- sshSession.setPassword(password);
- Properties sshConfig = new Properties();
- sshConfig.put("StrictHostKeyChecking", "no");
- sshSession.setConfig(sshConfig);
- sshSession.connect();
- System.out.println("Session connected.");
- System.out.println("Opening Channel.");
- Channel channel = sshSession.openChannel("sftp");
- channel.connect();
- sftp = (ChannelSftp) channel;
- System.out.println("Connected to " + host + ".");
- // sf.upload(directory, uploadFile, sftp);
- // sf.download(directory, downloadFile, saveFile, sftp);
- // sf.delete(directory, deleteFile, sftp);
- // sftp.cd(directory);
- Vector<LsEntry> v = sf.listFiles(directory, sftp);
- for (LsEntry e : v) {
- if(!e.getFilename().startsWith(".")) {
- saveFile = downLoadDirectory + e.getFilename();
- sf.download(directory, e.getFilename(), saveFile, sftp);
- }
- }
- System.out.println("finished");
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- sftp.exit();
- sshSession.disconnect();
- }
- }
- }
java sftp
最新推荐文章于 2024-05-08 19:00:00 发布