XFTP完整实例
来源:互联网 发布:数据库的应用领域 编辑:程序博客网 时间:2024/05/16 18:45
Xftp 与ftp 类似,安全性要较高。java实现操作sftp需要第三方的jar包,本例使用
jsch-20091114.jar
package xftp;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;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 handongwei */public class SftpRead {/** * 连接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, String uploadFile, ChannelSftp sftp) {try {sftp.cd(directory);File file = new File(uploadFile);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);FileOutputStream out = new FileOutputStream(file);InputStream in = sftp.get(downloadFile);BufferedReader bf = new BufferedReader(new InputStreamReader(in));StringBuffer sb = new StringBuffer();String line = null;while((line = bf.readLine()) != null){sb.append(line + "\n");}System.out.println(sb);sftp.get(downloadFile,out);if (out != null){out.close();}if (in != null){in.close();}} 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) {SftpRead sf = new SftpRead();String host = "10.0.1.3";int port = 22;String username = "weblogic";String password = "weblogic_iss";String directory = "/home/weblogic/bea103/user_projects/domains/ybttest_domain/log/BM";String uploadFile = "D:\\tmp\\upload.txt";String downloadFile = "debug.log";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.quit();System.out.println(sftp.isClosed());} catch (Exception e) {e.printStackTrace();}} public String convertStreamToString(InputStream is) { /* * To convert the InputStream to String we use the BufferedReader.readLine() * method. We iterate until the BufferedReader return null which means * there's no more data to read. Each line will appended to a StringBuilder * and returned as String. */ BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } }
jsch-20091114.jar
- XFTP完整实例
- xftp
- Google Suggest(完整实例)
- Google Suggest(完整实例)
- XML操作完整实例
- Google Suggest(完整实例)
- ExtJs GridPanel 完整实例
- jstree 完整实例
- struts1.x完整实例
- ExtJs GridPanel 完整实例
- JNA 详细完整实例
- epoll完整实例
- Spring Aop完整实例
- 完整的YAML实例
- epoll完整实例
- 完整的Ajax实例
- ajax完整实例
- 完整的Ajax实例
- 编写一个方法,去掉一个数组中的重复元素
- 离散PID控制器及校正及采样原理
- ListView中的滚动状态
- Android Service学习之AIDL, Parcelable和远程服务
- CSS网页布局中div和table超出宽度自动换行
- XFTP完整实例
- hibernate中数组如何对应到数据库中
- SGU 263 Tower(平衡树+并查集)
- VOIP通信原理简洁描述
- 赛马问题
- Struts2 Action多方法调用
- C# winform 开发之Excel操作(一)------打开Exce表
- getaddrinfo( ) - getnameinfo( )/ inet_ntop( )
- 插入排序之直接插入排序