`
nickkathy
  • 浏览: 34630 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

SSH 
阅读更多


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();
分享到:
评论

相关推荐

    sftp例子一个类一个使用案例

    本案例中,我们有两个PHP类文件:TearSftp.class.php和DemoController.class.php,它们提供了SFTP操作的实现和一个使用示例。 首先,`TearSftp.class.php`很可能是封装了SFTP连接和操作的类。在PHP中,实现SFTP功能...

    sftp 源代码及例子

    2. **创建Session**:使用`JSch`类的`getSession()`方法创建一个SSH会话实例。 3. **设置身份验证**:配置用户名、密码或密钥信息。 4. **连接服务器**:调用`Session.connect()`方法建立连接。 5. **开启SFTP会话**...

    sftp 磁盘映射小工具,可以把服务器的某个目录在本地映射出一个磁盘出来,方便操作

    标题中的“sftp 磁盘映射小工具”指的是一个能够将远程服务器上的SFTP(Secure File Transfer Protocol)目录映射为本地计算机的虚拟磁盘的软件。这个工具简化了用户对远程文件的操作,使其如同操作本地文件系统一样...

    sftp操作实例

    首先,你需要一个SFTP客户端软件,如`FileZilla`、`WinSCP`或命令行工具`ssh`。在Linux系统中,`ssh`命令通常预装;而在Windows上,可能需要安装`PuTTY`或`WinSCP`。配置客户端时,你需要提供远程服务器的地址(IP或...

    Sftp小工具.7z

    描述中的"Sftp小工具.7z"进一步强调这是一个轻量级且易于使用的工具,可能适用于那些需要频繁进行安全文件传输但又不想使用复杂软件的用户。7z是一种高压缩比的文件格式,这种格式常用于打包多个文件或程序,以便于...

    sftp例子(jar包&源码包)

    首先,`Java-sftptool.docx`可能是一个文档,详细解释了如何在Java项目中使用SFTP进行文件传输。通常,这样的文档会包含步骤、API调用示例以及可能遇到的问题和解决方案。在阅读这个文档时,你应该能了解到SFTP连接...

    SFTP.rar_SFTP客户端_c sftp_sftp c++_sftp 客户端_visual c

    sftp 客户端服务程序 基于 sftp通讯协议~~

    SFTP.rar_c sftp_mfc sftp_sftp_sftp mFC_socket实现sftp

    根据压缩包内的文件名称列表只有一个"SFTP",可以推测这是一个包含所有源代码、头文件或其他相关资源的主文件夹,可能含有类定义、函数实现、配置文件等。 从SFTP的实现角度来看,我们可以讨论以下几个关键知识点:...

    SFTP(SFTP)

    WinSCP_19281.rar可能是一个包含WinSCP最新版本19281的压缩文件,用户可以通过解压并安装来使用这个图形化界面的SFTP客户端,实现与远程服务器的安全文件交互。 sharpSsh是.NET平台上一个开源的SSH库,可用于实现...

    SftpDrive1.7.9带注册机

    标题中的"SftpDrive1.7.9带注册机"指的是一个名为SftpDrive的软件的特定版本1.7.9,其中包含了注册机程序。这个软件的主要功能是将SSH(Secure Shell)服务器作为Windows系统的网络驱动器进行映射,允许用户通过...

    基于SSH协议的sftp协议

    该类使用JSch库来实现SFTP协议的连接和文件传输,提供了一个基本的SFTP客户端实现。 SFTP协议的主要特点包括: * 安全性:SFTP协议使用SSH协议提供的加密机制,确保文件传输的安全性。 * 可靠性:SFTP协议提供了...

    DELPHI sftp

    在"Demo"文件中,可能包含了一个简单的示例代码,演示如何使用"SimpleSFTP.pas"中的函数进行连接、登录、上传、下载和管理文件等操作。以下是一些可能的关键步骤: 1. **连接**:初始化SFTP客户端,设置服务器地址...

    putty,sftp等一众小工具

    PSFTP是PuTTY套件的一部分,提供了一个命令行界面的SFTP客户端,可以执行上传、下载、列出目录、重命名文件等操作。 3. SCP:SCP(Secure Copy)同样基于SSH协议,用于在本地主机和远程主机之间安全地复制文件。与...

    qt sftp下载,使用Libssh2

    QT SFTP下载功能的实现主要依赖于Libssh2库,这是一个C语言编写的SSH2协议实现库,提供了安全文件传输的SFTP子系统。在本项目中,使用的是VS2008作为编译环境,Qt版本为4.8.6,这表明项目可能基于Qt4框架构建。下面...

    sftp-demo.rar

    为了使用`sftp-demo`项目,你需要先创建一个本地文件,然后创建一个`SftpUploader`实例,调用`uploadFile`方法将文件上传到SFTP服务器。例如: ```java public static void main(String[] args) { try ...

    mini-sftp-server.x64 迷你sftp免安装

    迷你SFTP服务器是一款轻量级的SFTP(SSH文件传输协议)服务器软件,尤其适合在无需复杂配置的情况下快速建立本地SFTP服务。标题中的“mini-sftp-server.x64”表明这是一款专为64位操作系统设计的版本,提供便捷的...

    JAVA实现SFTP上传,下载,删除等方法

    JSch是一个纯Java实现的SSH2库,它提供了对SFTP的支持,允许我们在Java应用中安全地执行文件传输。首先,我们需要添加JSch库到项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    Linux下的SFTP C语言客户端,包括SFTP下载、上传、list目录和创建目录

    开发者会使用libssh2_sftp_opendir()打开一个远程目录,接着调用libssh2_sftp.readdir()循环遍历目录中的每个条目,获取文件或子目录的信息,如文件名、大小、权限等。 `upload.c`文件则包含上传文件到SFTP服务器的...

    JAVA SFTP文件上传、下载及批量下载实例

    在使用JSch库时,我们需要了解它的基本使用方法。下面是一个简单的示例代码: ```java public class SFTPUtils { private static Logger log = Logger.getLogger(SFTPUtils.class.getName()); private String ...

    Java sftp上传文件夹demo

    在这个例子中,`uploadFolder()`方法初始化了JSch会话并打开SFTP通道。`uploadDirectory()`方法递归地处理文件夹中的所有文件和子文件夹。对于每个文件,它使用`put()`方法将文件从本地路径上传到远程路径。对于子...

Global site tag (gtag.js) - Google Analytics