sftp上传和下载.doc_第1页
sftp上传和下载.doc_第2页
sftp上传和下载.doc_第3页
sftp上传和下载.doc_第4页
sftp上传和下载.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

sftp文件上传和下载sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp与 ftp 有着几乎一样的语法和功能。SFTP 为SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。下面是java 代码sftp文件上传和下载具体实现1.连接服务器类package Test;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.Session;/* author lixiongjun* 利用JSch包实现创建ChannelSftp通信对象的工具类* 2015-1-27 上午10:03:21*/public class SftpUtil private static String ip = null; / ip 主机IPprivate static int port = -1; / port 主机ssh2登陆端口,如果取默认值,传-1private static String user = null; / user 主机登陆用户名private static String psw = null; / psw 主机登陆密码private static String servicePath = null; / 服务存储文件路径private static Properties prop = null;private static Session session = null;private static Channel channel = null;/ 读取配置文件的参数static prop = new Properties();ClassLoader cl = SftpUtil.class.getClassLoader();InputStream is = cl.getResourceAsStream(Test/Sftp_UpDperties);try prop.load(is); catch (IOException e) / System.out.println(读取配置文件出错!);e.printStackTrace();ip = prop.getProperty(ip);port = Integer.parseInt(prop.getProperty(port);user = prop.getProperty(user);psw = prop.getProperty(psw);servicePath = prop.getProperty(servicePath);/* 获取 sftp通信* return 获取到的ChannelSftp* throws Exception*/public static ChannelSftp getSftp() throws Exception ChannelSftp sftp = null;JSch jsch = new JSch();if (port = 0) / 连接服务器,采用默认端口session = jsch.getSession(user, ip); else / 采用指定的端口连接服务器session = jsch.getSession(user, ip, port);/ 如果服务器连接不上,则抛出异常if (session = null) throw new Exception(session is null);/ 设置登陆主机的密码session.setPassword(psw);/ 设置密码/ 设置第一次登陆的时候提示,可选值:(ask | yes | no)session.setConfig(StrictHostKeyChecking, no);/ 设置登陆超时时间session.connect(30000);try / 创建sftp通信通道channel = (Channel) session.openChannel(sftp);channel.connect();sftp = (ChannelSftp) channel;/ 进入服务器指定的文件夹sftp.cd(servicePath); catch (Exception e) e.printStackTrace();return sftp;/* 关闭连接*/public static void closeSftp() if (channel != null) if (channel.isConnected()channel.disconnect();if (session != null) if (session.isConnected()session.disconnect();2.上传下载工具类package Test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import org.junit.Test;import com.jcraft.jsch.ChannelSftp;public class SftpUploadOrDownload /* author lixiongjun* 实现sftp文件上传下载的工具类* 2015-1-27 下午15:13:26*/* 上传本地文件到服务器* param srcPath 本地文件路径* param dstFilename 目标文件名* return 是否上传成功*/public boolean upload(String srcPath,String dstFilename)ChannelSftp sftp=null;try sftp =SftpUtil.getSftp();sftp.put(srcPath,dstFilename);return true; catch (Exception e) e.printStackTrace();return false;finallySftpUtil.closeSftp();/* 上传本地文件到服务器* param in 输入流* param dstFilename 目标文件名* return 是否上传成功*/public boolean uploadBystrem(InputStream in,String dstFilename)ChannelSftp sftp=null;try sftp =SftpUtil.getSftp();sftp.put(in,dstFilename);return true; catch (Exception e) e.printStackTrace();return false;finallySftpUtil.closeSftp();/* 把服务器文件下载到本地* param desPath 下载到本地的目标路径* param srcFilename 源文件名* return 是否下载成功*/public boolean download(String srcFilename,String dstPath)ChannelSftp sftp=null;try sftp =SftpUtil.getSftp();sftp.get(srcFilename,dstPath);return true; catch (Exception e) e.printStackTrace();return false;finallySftpUtil.closeSftp();/* 获取服务器文件的内容,只对文本文件有效* param srcFilename 服务器所在源文件名* return 文件内容*/public String getServiceFileContext(String srcFilename)ChannelSftp sftp=null;InputStream in=null;BufferedReader br=null;String filecontext=;try sftp =SftpUtil.getSftp();in=sftp.get(srcFilename);br=new BufferedReader(new InputStreamReader(in);String str=br.readLine();while(str!=null)filecontext+=str+n;str=br.readLine(); catch (Exception e) e.printStackTrace();finallytry br.close();in.close(); catch (IOException e) e.printStackTrace();SftpUtil.closeSftp(); return filecontext;/* 删除服务器上文件* param filename 要删除的文件名* return 是否删除成功*/public boolean remove(String filename)ChannelSftp sftp=null;try sftp =SftpUtil.getSftp();sftp.rm(filename);return true; catch (Exception e) e.printStackTrace();return false;finallySftpUtil.closeSftp();Testpublic void TestSftpUpload()if(upload(E:/test.txt,test.txt)System.out.println(上传文件成功);elseSystem.out.println(上传文件失败);Testpublic void TestSftpDownload()if(download(test.txt,E:/downtest.txt)System.out.println(下载文件成功);elseSystem.out.println(下载文件失败);Testpublic void TestSftpgetServiceFileContext()String context=getServiceFileContext(test.txt);System.out.println(context);Testpublic void TestSftpRemove()if(remove(test.txt)System.out.println(删除文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论