SFTP文件上传与下载
2023-09-27 14:20:50 时间
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");
//关闭sftp连接
Session session=sftp.getSession();
session.disconnect();
} catch (Exception e) { e.printStackTrace(); } } }
相关文章
- ajax利用html5新特性带进度条上传文件
- [转] 通过jQuery Ajax使用FormData对象上传文件
- SpringMVC 文件的上传、下载
- Python3之socket编程(TCP/UDP,粘包问题,数据传输、文件上传)
- 上传文件--文件类型大全,图片类型,文档类型,视频类型,压缩包类型
- flutter网络请求dio的get、post、上传文件、下载文件总结
- Android OkHttp文件上传与下载的进度监听扩展 (四)
- Vue - 本地上传 Excel 文件页面表格预览(配合 Ant Design Vue / 带分页)
- [转]SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
- SpringBoot文件上传和自定义实体工具
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .
- 无插件实现大文件分片上传,断点续传
- 用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器
- 利用http实现文件的上传和下载
- springMVC 上传文件
- 文件传输 ------ SSH SFTP ------使用 windows 下的 secureCRT 软件的 通过 sftp( SSH file transfer protocol ) 上传和下载文件到远端 linux 设备
- 七牛云的文件上传和下载