使用递归+.Net FtpWebRequest获得远程服务器的目录结构树

TreeView1是.Net TreeView控件。请在WinForm界面上添加一个控件

Form1_load中的Dec是实例化ftpClient.vb的一个对象,ftpDetails是用来存储FTP登录凭据的。

Form1.vb

1Public Class Form1Class Form1
2
3    Dim ftp As ftpClient
4    Dim LocalFileList As New DataTable
5
6    Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
7        Dim Dec As New ftpClient.FtpDetails("www.cnblogs.com", 21, "cnblogVIP", "**********")
8        ftp = New ftpClient(Dec)
9        loadFtpTree(TreeView1.Nodes, "") '调用此代码可以装载远程FTP结构树
10
11    End Sub
12
13    '这个方法用于获得远程目录及文件树
14    Private Sub loadFtpTree()Sub loadFtpTree(ByVal Nodes As TreeNodeCollection, ByVal Path As String)
15        ''获得各级分类
16        Dim sNode As Integer = -1
17        ''通过FTP获得当前目录列表
18        Dim result As String = ftp.GetFileList(Path)
19        Dim files() As String = Split(result, vbCrLf) '把FTP服务器返回的文本,分离出是目录还是文件,文件或目录名,文件大小
20        Dim ffi As New ftpClient.FtpListFileInfo
21        If files.Length > 0 Then
22            '加载节点
23            Dim I As Integer
24            For I = 0 To files.Length - 2
25                ffi.ParserString(files(I)) '对返回的单行做分割。分离出是目录还是文件,文件或目录名,文件大小
26                If ffi.IsDirectory = True And ffi.FileName <> ".." And ffi.FileName <> "." Then '如果是有效的目录。
27                    sNode += 1
28                    Nodes.Add(0, ffi.FileName) '由于是目录,前面的参数保存了类似.Tag一样的作用,这里保存了文件的size
29                    Dim newpath As String = Path + "/" + ffi.FileName 'FileName如果是文件表示文件名,否则表示目录名
30                    Application.DoEvents()
31                    '读取当前节点的子节点加载()
32                    loadFtpTree(Nodes(sNode).Nodes, newpath) '递归检查当前目录下是否有子目录
33                ElseIf ffi.IsDirectory = False Then '如果是文件
34                    sNode += 1
35                    Nodes.Add(ffi.FileSize.ToString, ffi.FileName) '加入到节点中
36                End If
37            Next
38        End If
39        TreeView1.ExpandAll()
40    End Sub

时间: 2024-12-02 09:13:21

使用递归+.Net FtpWebRequest获得远程服务器的目录结构树的相关文章

C# FTP,GetResponse(),远程服务器返回错误_实用技巧

FtpWebRequest类实现ftp功能的一般过程 1.创建一个FtpWebRequest对象,指向ftp服务器的uri 2.设置ftp的执行方法(上传,下载等) 3.给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等) 4.设置登录验证(用户名,密码) 5.执行请求 6.接收相应流(如果需要的话) 7.如果没有打开的流,则关闭ftp请求 其中一些重要的属性如下: ·Credentials - 指定登录ftp服务器的用户名和密码. ·KeepAlive - 指定连接

[转]C# FTP,GetResponse(),远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)

来源:http://hi.baidu.com/kidcdf/blog/item/a1cb65ec3851d1d42e2e21e5.html FtpWebRequest类实现ftp功能的一般过程 1.创建一个FtpWebRequest对象,指向ftp服务器的uri2.设置ftp的执行方法(上传,下载等)3.给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等)4.设置登录验证(用户名,密码)5.执行请求6.接收相应流(如果需要的话)7.如果没有打开的流,则关闭ftp请求

ftp-FTP IE可以访问,但用C#跑就报“无法连接到远程服务器”

问题描述 FTP IE可以访问,但用C#跑就报"无法连接到远程服务器" 写了一个小工作用C# 通过FtpWebRequest 下载服务器文件. 本机运行OK,部署到客户机器上运行程序就报"无法连接到远程服务器",但客户的IE是可以打开这个FTP地址的. 错误信息是程序跑到WebResponse response = reqFTP.GetResponse()抛出的. 急!!!请帮忙! 解决方案 你的请求链接代码能不能贴出来看一下,超时之类的设置一下. 解决方案二: p

.NET 2.0 中FTP 出现远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。

问题描述 {System.Net.WebException:远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件).在System.Net.FtpWebRequest.SyncRequestCallback(Objectobj)在System.Net.FtpWebRequest.RequestCallback(Objectobj)在System.Net.CommandStream.Abort(Exceptione)在System.Net.FtpWebRequest.Finis

C#用FTP上传文件,经常出现远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。

问题描述 //根据uri创建FtpWebRequest对象reqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(path));//指定数据传输类型reqFTP.UseBinary=true;//ftp用户名和密码reqFTP.Credentials=newNetworkCredential(ftpUserID,ftpPassword);reqFTP.KeepAlive=false;reqFTP.UsePassive=true;reqFTP.ReadW

利用scp备份远程服务器上的文件到本地

当远程服务器上的图片需要备份时候,我们可以利用Linux的scp命令进行远程拷贝到本地. 先简单介绍一下scp的用法: 语法格式: scp [OPTIONS] file_source file_target OPTIONS: -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接.认证. 或是配置错误 -C 使能压缩选项 -P 选择端口 . 注意 -p 已经被 rcp 使用 -r 递归下面所有文件 example: 从 本地/home/test.log 复制

网站-发布到远程服务器后,LinkButton失效

问题描述 发布到远程服务器后,LinkButton失效 用asp.net写的网站,在本机测试并发布在本机后,在本机或者其他机子访问,LinkButton都可以正常点击,gridview自带的分页点击也可以正常分页. 但是发布到远程主机后,在本机访问或者其它机子(同一个浏览器),所有的LinkButton失效,gridview自带的分页链接点击也失效.

java-RMI本地client调用远程服务器上的server报错

问题描述 RMI本地client调用远程服务器上的server报错 代码这篇文章上的.Java RMI之HelloWorld篇 我把ihello,helloimpl,server放在了服务器上,client放在了本机电脑的eclipse中 保证远程服务器上的server正常运行,运行client报错 Caused by: java.lang.ClassNotFoundException: IHello (no security manager: RMI class loader disabled

如何把本地MySql数据库移植到远程服务器上

如何把本地MySql数据库移植到远程服务器上 用dedecms做了一个女性网站,是仿爱丽女人网的.为了在本地测试,就要添加分类栏目,为了看首页和列表页面的效果,还得在网上采集大量的各个分类的内容.这样下来几十个栏目每栏目几十条信息,信息一下就是几千条.做着做着就还不如先在本地做好,然后带数据图片一起上传上去.速度快!好操作,灵活性大.现在就把数据库的移植过程写出来和大家共享,有这样做的朋友也可以做个参考! 所有数据做好了,申请空间,申请数据库,好多情况也是已经有数据的数据回了.哪就要先备份已有的