首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

SFTP的一个小例证(备忘用法)

2012-10-30 
SFTP的一个小例子(备忘用法)import ch.ethz.ssh2.Connectionimport ch.ethz.ssh2.ConnectionMonitorimpo

SFTP的一个小例子(备忘用法)


import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.ConnectionMonitor;import ch.ethz.ssh2.SFTPv3Client;import ch.ethz.ssh2.SFTPv3DirectoryEntry;import ch.ethz.ssh2.SFTPv3FileHandle;Connection conn = new Connection(sshHostname);conn.addConnectionMonitor(new ConnectionMonitor() {public void connectionLost(Throwable reason) {reason.getStackTrace();throw new RuntimeException(reason);}});conn.connect();File keyfile = new File(privKeyPath);boolean isAuthenticated = conn.authenticateWithPublicKey(sshUsername, keyfile, sshPassword);if (isAuthenticated == false) {throw new IOException("Connect SSH Authentication failed.");}log.info("Connecting to " + sshHostname + "successful !");SFTPv3Client client = new SFTPv3Client(conn);client.setCharset("GBK");Vector<SFTPv3DirectoryEntry> fileList = client.ls(sourceFile);if (fileList.size() == 0) {log.info("No file existed in the sourceFolder ["+sourceFile+"]");return;}for (SFTPv3DirectoryEntry entry : fileList) {log.debug("Capture the file "+entry.filename+" in the sourceFolder ["+"]");if (".".equals(entry.filename) || "..".equals(entry.filename)) {continue;}if (!entry.filename.startsWith("atcc")) {continue;}CaptureDataTrack captureDataTrack = captureDataTrackService.captureChecker(entry.filename);if (captureDataTrack != null) {continue;}log.info(entry.filename + " " + entry.longEntry);SFTPv3FileHandle fileHandle = client.openFileRO(sourceFile + entry.filename);File myFile = new File(targetFile + entry.filename);OutputStream out = new FileOutputStream(myFile);long numread = 0;int length = 0;Long len = entry.attributes.size;int readSize = len.compareTo(Long.valueOf(loadSize)) > 0 ? loadSize : len.intValue();byte[] bytes = new byte[readSize];while (readSize > 0 && (numread = client.read(fileHandle, length, bytes, 0, readSize)) != -1) {length += numread;out.write(bytes);readSize = len.compareTo(Long.valueOf(length + loadSize)) > 0 ? loadSize : (int) (len - length);bytes = new byte[readSize];}out.close();

热点排行