- 浏览: 239708 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (101)
- js (10)
- java (39)
- HTTP请求:GET与POST方法的区别(转) (1)
- Freemarker 语法规则 (1)
- AJAX级联菜单实例 (1)
- oralce (1)
- myeclipse (5)
- struts (12)
- sql存储过程基础(转) (4)
- JBPM (1)
- mysql (4)
- hibernate (3)
- ibatis (4)
- spring (4)
- 计算机技术 (1)
- nosql (1)
- sqlserver (1)
- servlet (1)
- 拦截器 (1)
- andriod 开发 (1)
- 程序员 (0)
- 多线程 (2)
- Jenkins (1)
- zk (1)
- JPA (2)
最新评论
-
zhangzh888:
怎么下载 啊 都没有看见文件
sftp处理文件 -
wx_hello:
怎么得到文件的属性呢? 比如文件的新建时间
sftp处理文件 -
HappyVeryGood:
“运行时异常(即非受控异常)自动强制执行整个逻辑工作单元的回滚 ...
事物管理,spring事物详解,spring @transactional -
skeely1234:
感谢分享,太帅了
eclipse下修改项目名导致tomcat内发布名不一致的解决方法
最近工作涉及sftp处理文件,写了个工具类,代码已经测试。请需要的同仁自行下载,根据自己需要,修改加工。附件有参考源码及必要jar包。
Java代码
package nontax.helper;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
/**
* 提供SFTP处理文件服务
* @author Tonny
* @since Apr.27 2012
*
*/
public class SFtpHelper {
private JSch jSch = null;
private ChannelSftp sftp = null;//sftp主服务
private Channel channel = null;
private Session session = null;
private String hostName="127.0.0.1";//远程服务器地址
private int port=22;//端口
private String userName="Tonny";//用户名
private String password="123";//密码
public SFtpHelper(String hostName, int port, String userName,
String password){
this.hostName=hostName;
this.port=port;
this.userName=userName;
this.password=password;
}
/**
* 连接登陆远程服务器
* @return
*/
public boolean connect() throws Exception{
try {
jSch= new JSch();
session = jSch.getSession(userName, hostName, port);
session.setPassword(password);
session.setConfig(this.getSshConfig());
session.connect();
channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("登陆成功:"+sftp.getServerVersion());
} catch (JSchException e) {
System.err.println("SSH方式连接FTP服务器时有JSchException异常!");
System.err.println(e.getMessage());
throw e;
}
return true;
}
/**
* 关闭连接
* @throws Exception
*/
private void disconnect() throws Exception {
try{
if (sftp.isConnected()) {
sftp.disconnect();
}
if (channel.isConnected()) {
channel.disconnect();
}
if (session.isConnected()) {
session.disconnect();
}
}catch(Exception e){
throw e;
}
}
/**
* 获取服务配置
* @return
*/
private Properties getSshConfig()throws Exception{
Properties sshConfig=null;
try{
sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
}catch(Exception e){
throw e;
}
return sshConfig;
}
/**
* 下载远程sftp服务器文件
* @param remotePath
* @param remoteFilename
* @param localFilename
* @return
*/
public boolean downloadFile(String remotePath,
String remoteFilename,String localFilename)throws SftpException,
IOException, Exception{
FileOutputStream output = null;
boolean success = false;
try {
if (null != remotePath && remotePath.trim() != "") {
sftp.cd(remotePath);
}
File localFile = new File(localFilename);
//有文件和下载文件重名
if (localFile.exists()) {
System.err.println("文件: " + localFilename + " 已经存在!");
return success;
}
output = new FileOutputStream(localFile);
sftp.get(remoteFilename, output);
success = true;
System.out.println("成功接收文件,本地路径:"+localFilename);
} catch (SftpException e) {
System.err.println("接收文件时有SftpException异常!");
System.err.println(e.getMessage());
return success;
} catch (IOException e) {
System.err.println("接收文件时有I/O异常!");
System.err.println(e.getMessage());
return success;
} finally {
try {
if (null != output) {
output.close();
}
//关闭连接
disconnect();
} catch (IOException e) {
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
}
return success;
}
/**
* 上传文件至远程sftp服务器
* @param remotePath
* @param remoteFilename
* @param localFileName
* @return
*/
public boolean uploadFile(String remotePath,
String remoteFilename, String localFileName)throws SftpException,Exception {
boolean success = false;
FileInputStream fis=null;
try {
// 更改服务器目录
if (null != remotePath && remotePath.trim() != "") {
sftp.cd(remotePath);
}
File localFile = new File(localFileName);
fis = new FileInputStream(localFile);
// 发送文件
sftp.put(fis, remoteFilename);
success = true;
System.out.println("成功发送文件,本地路径:"+localFileName);
} catch (SftpException e) {
System.err.println("发送文件时有SftpException异常!");
e.printStackTrace();
System.err.println(e.getMessage());
throw e;
} catch (Exception e) {
System.err.println("发送文件时有异常!");
System.err.println(e.getMessage());
throw e;
} finally {
try {
if (null != fis) {
fis.close();
}
//关闭连接
disconnect();
} catch (IOException e) {
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
}
return success;
}
/**
* 上传文件至远程sftp服务器
* @param remotePath
* @param remoteFilename
* @param input
* @return
*/
public boolean uploadFile(String remotePath,
String remoteFilename, InputStream input)throws SftpException,Exception {
boolean success = false;
try {
// 更改服务器目录
if (null != remotePath && remotePath.trim() != "") {
sftp.cd(remotePath);
}
// 发送文件
sftp.put(input, remoteFilename);
success = true;
} catch (SftpException e) {
System.err.println("发送文件时有SftpException异常!");
e.printStackTrace();
System.err.println(e.getMessage());
throw e;
} catch (Exception e) {
System.err.println("发送文件时有异常!");
System.err.println(e.getMessage());
throw e;
} finally {
try {
if (null != input) {
input.close();
}
//关闭连接
disconnect();
} catch (IOException e) {
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
}
return success;
}
/**
* 删除远程文件
* @param remotePath
* @param remoteFilename
* @return
* @throws Exception
*/
public boolean deleteFile(String remotePath, String remoteFilename) throws Exception {
boolean success = false;
try {
// 更改服务器目录
if (null != remotePath && remotePath.trim() != "") {
sftp.cd(remotePath);
}
// 删除文件
sftp.rm(remoteFilename);
System.err.println("删除远程文件"+remoteFilename+"成功!");
success = true;
} catch (SftpException e) {
System.err.println("删除文件时有SftpException异常!");
e.printStackTrace();
System.err.println(e.getMessage());
return success;
} catch (Exception e) {
System.err.println("删除文件时有异常!");
System.err.println(e.getMessage());
return success;
} finally {
//关闭连接
disconnect();
}
return success;
}
public String getHostName() {
return hostName;
}
public void setHostName(String hostName) {
this.hostName = hostName;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/**
*测试方法
*
*/
public static void main(String [] args){
try{
SFtpHelper sftp=new SFtpHelper("192.168.1.2",22,"ftp","sftp_test");
System.out.println(new StringBuffer().append(" 服务器地址: ").append(sftp.getHostName()).append(" 端口:")
.append(sftp.getPort()).append("用户名:").append(sftp.getUserName()).append("密码:")
.append(sftp.getPassword().toString()));
sftp.connect();
// sftp.downloadFile("\\", "test.txt", "D:\\work\\test.txt");
// sftp.uploadFile("\\", "test.txt", "D:\\work\\readMe.txt");
// sftp.deleteFile("\\", "test.txt");
}catch(Exception e){
System.out.println("异常信息:" + e.getMessage());
}
}
}
发表评论
-
习惯的开发错误
2014-09-09 17:25 471在一个包的下面 创建一个test.java 文件 这样一个小 ... -
得到指定年份的所有周末
2014-08-20 18:18 1209/** * 得到指定年份的所有周末 */ publi ... -
对对字符串可能出现报空指针的小问题
2014-04-14 14:42 887今天很是郁闷啊,遇到一个基础的问题比对字符串的两种写法: ... -
Java 单例模式详解(转)
2014-03-26 16:52 830概念: java中单例 ... -
往文件里写入字符串
2014-01-20 13:52 1147package ab; import java.io.Bu ... -
Java数组,去掉重复值、增加、删除数组元素
2014-01-02 14:18 5168import java.util.List; import ... -
java定时器的使用(Timer)
2013-10-14 16:42 2445java定时器的使用(Timer) 2008-02-14 13 ... -
JSch - Java实现的SFTP(文件上传详解篇)(转)
2013-10-14 16:40 3443JSch是Java Secure Channel的缩写。JSc ... -
jvm
2013-09-30 15:03 771网上看到一位javaeye的同志写的文章,感觉总结的比较好,虽 ... -
java BigDecimal的使用和四舍五入及格式规范(精准数据)
2013-06-17 15:37 21577• Java中的简单浮点数类型float和double不能够进 ... -
servlet拦截器代码
2013-03-29 13:45 22481- 实现Servlet.Filter接口 public cl ... -
session 超时的时间设置
2013-03-22 14:47 979为单个Web应用 配置超时时间可以在web.xml中使用< ... -
Calendar 获取日期
2013-01-23 10:44 1331Calendar 获取日期 如果想得到某个星期几是什么日期, ... -
JAVA帮助文档全系列
2013-01-05 11:02 0JAVA帮助文档全系列 JDK1.5 JDK1.6 JD ... -
Cannot create a server using the selected type
2012-08-27 11:02 0eclipse中安装tomcat服务器,报错" Ca ... -
线程池(jdk实现)
2012-07-10 15:01 0Sun在Java5中,对Java线程的类库做了大量的扩展,其中 ... -
遍历集合
2012-06-26 17:28 1072* * To change this template, c ... -
(转)Java 序列化
2012-06-26 14:55 1951当我们需要序列化一个J ... -
权限控制的发散性思维
2012-06-15 17:31 991权限控制的讨论 http://www.iteye.com ... -
(转载)Java设计模式的三大块讲解
2012-06-15 17:27 1207转载自http://www ...
相关推荐
9. **多线程支持**:FileZilla可以同时处理多个文件传输任务,提高效率。 10. **安全性**:由于使用SFTP协议,所有的文件传输都经过加密,有效防止数据泄露。 总之,SFTP上传下载文件工具如FileZilla,对于需要...
本教程将详细介绍如何通过编写bat脚本结合Putty工具中的psftp子程序实现SFTP(Secure File Transfer Protocol)文件上传,并且讲解如何利用Windows任务计划程序设置定时任务,从而实现自动化的文件传输。 首先,`...
在处理完所有文件操作后,别忘了关闭连接: ```csharp ssh.Disconnect(); ``` 至于提到的"formClient",可能是指使用C#编写的一个客户端应用程序,该应用可能会有一个用户界面,用户通过这个界面与SFTP服务器交互...
在IT行业中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它允许用户在不安全的网络环境中安全地传输文件。SFTP是SSH(Secure Shell)的一部分,提供了加密的数据传输,确保了数据的隐私性和...
在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,常用于在服务器之间或客户端与服务器之间进行文件的上传和下载。Java提供了多种库来支持SFTP操作,例如JSch(Java Secure Channel)...
【标题】"SFTP定时扫描本地文件上传到Linux服务器"涉及的关键知识点主要集中在SFTP(Secure File Transfer Protocol)协议的使用、文件系统的监控以及自动化任务的执行。SFTP是一种安全的网络协议,用于在不同主机...
总的来说,通过Apache Commons Net库处理FTP,和使用JSch库处理SFTP,开发者可以在Java应用中实现高效、安全的文件上传和下载功能,满足各种文件传输场景的需求。这两个库的使用极大地简化了开发过程,使得Java...
这里推荐使用Renci.SshNet库,它提供了易于使用的API来处理SFTP连接、文件上传和下载。要使用这个库,你需要在项目中添加对Renci.SshNet的引用。你可以通过NuGet包管理器安装,命令为:`Install-Package Renci....
在本文中,我们将深入探讨如何使用C#语言实现SFTP(Secure File Transfer Protocol)文件上传功能。SFTP是一种安全的网络协议,用于在客户端和服务器之间传输文件,它基于SSH(Secure Shell)协议,提供了数据加密和...
Java SFTP文件上传是通过Java编程语言实现与Secure File Transfer Protocol(SFTP)服务器进行交互,将本地文件安全地传输到远程服务器的过程。SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络上安全...
标题中的“SFtp文件处理”指的是使用Secure File Transfer Protocol(SFTP)进行文件操作的相关技术。SFTP是一种安全的网络协议,用于在不同系统之间安全地传输文件,它基于SSH(Secure Shell)协议,提供了数据加密...
这些库为开发人员提供了简洁的API来处理SFTP连接、文件上传、下载等操作。 3. **Renci.SshNet库**: Renci.SshNet是.NET平台上广泛使用的SFTP库之一,它支持SSHv2协议,提供完整的SFTP功能。在这个项目中,可能...
在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,常用于在本地系统和远程服务器之间安全地传输文件。JSch(Java Secure Channel)是一个开放源码的Java库,它实现了SSH2协议,包括...
在Windows平台上进行FTP(文件传输协议)和SFTP(安全文件传输协议)的文件与文件夹的下载和上传,通常需要使用特定的库来实现。本项目提供的是一套完整的C++工程源代码,包含了FTP和SFTP的客户端功能,便于开发者在...
【标题】基于QSSH的sftp文件管理器 源代码 在IT行业中,文件管理是日常工作中不可或缺的一部分,尤其是在远程服务器操作时。SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在不安全的网络环境中...
在Java编程环境中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,常用于在服务器之间或客户端与服务器之间交换文件。SFTP基于SSH(Secure Shell)协议,提供了加密的文件传输,确保数据在传输...
总的来说,C#和Renci.SshNet为开发人员提供了一个强大且灵活的工具集,用于处理SFTP文件操作,同时可以通过回调机制轻松地实现进度监控,提升用户体验。在你的SFTPtest工程中,你可以找到一个完整的示例,包含了编译...
在IT领域,Windows操作系统上的SFTP(Secure File Transfer Protocol)文件管理服务器是一种安全的数据传输解决方案,它基于SSH(Secure Shell)协议,确保了文件传输过程中的数据加密,从而提高了安全性。...
本文将深入探讨如何使用Java实现SFTP(Secure File Transfer Protocol)和FTP(File Transfer Protocol)进行文件的上传与下载,以满足在Linux服务器上的操作需求。 首先,FTP是一种用于在网络之间传输文件的标准...