依赖jar包:jsch-0.1.43.jar
下载地址http://www.jcraft.com/jsch/
[java] view plain copypackage com.sftp; /* * Created on 2009-9-14 * Copyright 2009 by www.xfok.net. All Rights Reserved * */ 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.ChannelSftp.LsEntry; import com.jcraft.jsch.JSch; import com.jcraft.jsch.session; import com.jcraft.jsch.SftpException; /** * @author YangHua * */ public class SFTPUtils { // private static final String host = "192.168.1.168"; // private static final int port = 22; // private static final String username = "tmux"; // private static final String passWord = "tmux"; // private static final String directory = "/data/backup/168"; // // private static final String downloadFile = "xxx.txt"; // private static final String uploadFile = "d:/cc.jpg"; // private static final String saveFile = "e:/cc.jpg"; // private static final String deleteFile = "cc.jpg"; /** * 连接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; System.out.println("Connected to " + host + "."); } catch (Exception e) { e.printStackTrace() ; } 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 */ @SuppressWarnings("unchecked") public Vector<LsEntry> listFiles(String directory, ChannelSftp sftp) throws SftpException{ return sftp.ls(directory); } public static void main(String[] args) throws Exception { // MySFTP sf = new MySFTP(); // ChannelSftp sftp = sf.connect(host, port, username, password); //获取连接 // // //sf.upload(directory, uploadFile, sftp); //上传文件 // // sf.download(directory, downloadFile, saveFile, sftp); //删除文件 // sf.delete(directory, deleteFile, sftp); //删除文件 // Vector<LsEntry> files = sf.listFiles(directory, sftp); //查看文件列表 // for (LsEntry file : files) { // System.out.println(file.getFilename()); // } } }新闻热点
疑难解答