- 浏览: 54310 次
- 性别:
- 来自: 洛阳
文章分类
最新评论
这是自己总结的一个类,包含连接sftp,上传,下载等操作,附件附有jar包
package com.patronli.web.service; 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; /** * * @author patronli * */ public class FtpService { /** * 连接sftp服务器 * * @param host * 主机 * @param port * 端口 * @param username * 用户名 * @param password * 密码 * @return */ public ChannelSftp connect(String host, int port, String username, String password) { System.out.println("开始连接sftp"); 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 + "."); System.out.println("连接sftp成功.."); } catch (Exception e) { System.out.println("连接失败"); e.printStackTrace(); } return sftp; } /** * 上传文件 * * @param directory * 上传的目录 * @param uploadFile * 要上传的文件 * @param sftp */ public void upload(String directory, String uploadFile, ChannelSftp sftp) { System.out.println("进入方法,开始读取文件"); try { sftp.cd(directory); File file = new File(uploadFile); System.out.println("开始上传报表文件" + file.getName()); sftp.put(new FileInputStream(file), file.getName()); System.out.println("上传报表文件" + file.getName() + "完毕"); System.out.println("上传报表文件成功"); } catch (Exception e) { System.out.println("上传报表文件失败"); e.printStackTrace(); } } /** * 下载文件 * * @param directory * 下载目录 * @param downloadFile * 下载的文件 * @param saveFile * 存在本地的路径 * @param sftp */ public void download(String directory, ChannelSftp sftp, String path) {// sftp路径,链接,保存的路径+文件名 try { sftp.cd(directory); File file = new File(path); sftp.get(path, new FileOutputStream(file)); System.out.println("下载成功:" + path); } catch (Exception e) { System.out.println("下载文件出现异常:::"); 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 void deal(int judge) { String directory = ""; String host = "101.231.206.140";// 服务器ip地址 String username = "177760236"; String password = "123456"; int port = 21121;// 端口号 String fileName = "patronli.txt"; String localUrl = "F:\\";// 文件下载到本地的地址,虚拟机上的格式/home/fy_flg/reportFile/ String path = localUrl + fileName;// 路径+文件名 ChannelSftp sftp = connect(host, port, username, password); if (judge == 1) {// 表示下载 directory = "/download/";// sftp操作文件的目录 download(directory, sftp,path);// 下载文件--sftp目录,要下载的文件名字,下载到的地方, } else { directory = "/upload/";// sftp操作文件的目录 upload(directory, path, sftp);// 上传--sftp目录,要上传文件的地址 } } public static void main(String[] args) { FtpService sf = new FtpService(); sf.deal(1); } }
- jsch-0.1.51.jar (257.6 KB)
- 下载次数: 2
发表评论
-
Condition
2017-01-03 16:58 0condition的应用 -
servlet监听器功能讲解及代码案例
2017-07-08 16:54 620servlet监听器功能讲解及代码案例 监听器的功能很强大, ... -
web.xml之session超时设置 以及设置session超时的几种方法
2016-10-20 16:39 1188web.xml之session超时设置 先说正题,web. ... -
web.xml之过滤器详解 以及常用过滤器demo
2016-10-20 14:15 2716web.xml之过滤器详解 一 ... -
poi导出excel清晰 步骤详解
2016-10-14 14:08 843poi导出excel清晰 步骤详解 一、本次生成excel ... -
struts2下载文件最简化版清晰详解
2016-10-14 11:20 614struts2下载文件最简化版清晰详解 一、应用场景如下: ... -
poi解析excel步骤详解
2016-10-14 10:42 2115poi解析excel步骤详解 一、本次解析excel应用场景 ... -
struts2文件上传详解
2016-10-13 11:26 806struts2文件上传详解 一、jsp代码 <fo ... -
ThreadLocal用法详解
2016-09-29 10:44 1602ThreadLocal用法详解 1.ThreadLocal的 ... -
JSONObject、JSONArray、xml的常用操作
2016-09-28 16:33 1364JSONObject、JSONArray、xml的常用操作 ... -
Rsa签名算法详解
2016-09-22 09:48 4627Rsa签名算法详解 签名生成规则与验证签名规则如下: ... -
Quartz定时任务的实现及详解
2016-09-21 18:03 2161Quartz定时任务的实现及详解 平常工作中经常遇到写定时任 ... -
四种线程池的特性以及测试代码
2016-09-21 09:20 904四种线程池的特点如下 ... -
操作json
2016-09-18 13:01 641总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
日期类型转换
2016-09-18 12:50 531总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
配置文件的读取与写入
2016-09-14 17:00 649读取配置文件: public static void m ... -
HttpPoster接口调用
2016-09-13 13:47 1623工作中经常用到的东西,这也是自己在公司的基础上改造的,感觉挺好 ... -
md5加密
2016-09-13 13:39 594md5工具类如下所示,可以直接拿走用,分享记录一下 pack ... -
AES加密与解密
2016-09-13 13:37 477这个其实是我们项目里面的一个工具类,给大家做一下分享 aes ... -
循环map取值的方法
2016-09-08 13:00 1543循环map取值的方法,如下所示: 方法一: Map< ...
相关推荐
在这个“Sftp文件上传demo”中,我们将深入探讨如何使用SFTP进行文件上传操作。 首先,我们需要了解SFTP的基本概念。SFTP通过SSH连接建立一个安全通道,用于执行文件管理操作,如上传、下载、重命名和删除文件。与...
通过阅读和分析"FTP与SFTP文件上传Demo",你可以学习到如何在实际项目中安全有效地进行文件传输。同时,这也能帮助你更好地理解网络安全和隐私保护的重要性,特别是在当今数据安全日益受到关注的时代。
在实际开发中,你可能还需要处理更多细节,例如重试机制、异常处理、文件上传、文件删除等。了解这些知识点后,你就能在Web服务器和Linux环境下实现与FTP服务器的交互,有效地管理和读取远程文件。
文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java...
文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java...
4. **更改SFTP服务器文件**:这可能指的是对服务器上的文件进行重命名、移动、删除等操作。SFTP API提供了对远程文件系统进行各种操作的接口。 5. **myeclipse项目工程**:MyEclipse是集成开发环境,用于编写Java...
5. **上传文件**:在Java中,首先需要将本地文件读入字节数组,然后调用FTPClient的`storeStream()`方法,传入目标文件名和字节流,完成文件上传。 6. **下载文件**:下载文件时,先调用`retrieveStream()`方法获取...
客户端通过建立连接请求与FTP服务器交互,执行上传、下载、列出目录、删除文件等操作。服务器端则响应这些请求,处理文件操作,并将结果返回给客户端。 FTP协议使用两种传输模式:主动模式(Port模式)和被动模式...
在Java中,文件上传通常使用各种框架(如Apache Commons FileUpload、Spring的MultipartFile等)或者通过Socket编程实现自定义的上传协议。 5. 阻塞式IO流使用 阻塞式IO流是Java中实现文件操作的传统方式。以...
JSch库提供了SFTPClient接口,通过这个接口可以实现文件的上传、下载、重命名和删除等操作。 5. **命令执行**:SSH2可以执行远程服务器上的命令。在Java中,你可以创建一个Exec通道,通过这个通道发送命令并接收...
- 源代码中通常包括登录验证、文件上传下载逻辑、目录操作等模块。 - FTP连接的建立和关闭,以及异常处理也是重要部分。 - 示例程序可能使用FTP库,如Java的Apache Commons Net,Python的ftplib等,这些库提供了...
2. **FTP工具类**:`FtpUtil`是核心工具类,它包含了一系列静态方法,如`connect()`用于建立连接,`uploadFile()`和`downloadFile()`分别用于文件上传和下载,以及`disconnect()`用于关闭连接。这些方法内部会使用`...
这些jar包提供了FTP客户端的功能,允许开发者通过编程方式连接到FTP服务器,执行上传、下载、删除等操作。 在Java中,常见的FTP客户端库有Apache Commons Net和Java内置的`java.net`包中的`FTPClient`类。Apache ...