SFTP是对ftp进行加密的一种文件协议.
首先是先引入:jsch-0.1.42-sources.jar与jsch-0.1.42.jar包
SFTP文件上传与下载。
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; /** * sftp文件上传与下载 * */ public class SFTPUtil { /** * 连接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) { } return sftp; } /** * 上传文件 * * @param directory * 上传的目录 * @param uploadFile * 要上传的文件 * @param sftp */ public void upload(String directory, File file, ChannelSftp sftp) { try { sftp.cd(directory); 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 listFiles(String directory, ChannelSftp sftp) throws SftpException { return sftp.ls(directory); } public static void main(String[] args) { File file = new File("E:/apache-tomcat-7.0.54/RUNNING.txt"); SFTPUtil sf = new SFTPUtil(); String host = "114.215.119.231"; int port = 22; String username = "root"; String password = ""; String directory = "/javawork/zmcc"; String uploadFile = "E:/apache-tomcat-7.0.54/RUNNING.txt"; //String downloadFile = "upload.txt"; //String saveFile = "D:\\tmp\\download.txt"; //String deleteFile = "delete.txt"; ChannelSftp sftp = sf.connect(host, port, username, password); //sf.upload(directory, uploadFile, sftp); //sf.download(directory, downloadFile, saveFile, sftp); //sf.delete(directory, deleteFile, sftp); try { sftp.cd(directory); sftp.mkdir("ss"); System.out.println("finished"); } catch (Exception e) { e.printStackTrace(); } } }
链接下载:http://pan.baidu.com/s/1mg8bDGW
时间: 2024-10-14 21:32:09