社区
网络及通讯开发
帖子详情
如何FTP客户端的多级遍历?
zhuangbin
2005-04-22 08:49:05
我想写一FTP客户端的程序,可以实现上传和下载功能,现在已基本实现.
但我想在开始输入时就能看到FTP上的所有资源列表.比如在文件<<编程>>下有一子文件<<c语言课件>>,我想直接看到<<c语言课件>>下的目录,不知该怎样实现?
我用NMFTP1->ChangeDir(文件名); NMFTP1->List();实现时一次只能看一个文件下的目录.不只该怎样用遍历算法实现,可以帮一下忙吗,在线等?
...全文
189
12
打赏
收藏
如何FTP客户端的多级遍历?
我想写一FTP客户端的程序,可以实现上传和下载功能,现在已基本实现. 但我想在开始输入时就能看到FTP上的所有资源列表.比如在文件<<编程>>下有一子文件<<c语言课件>>,我想直接看到<<c语言课件>>下的目录,不知该怎样实现? 我用NMFTP1->ChangeDir(文件名); NMFTP1->List();实现时一次只能看一个文件下的目录.不只该怎样用遍历算法实现,可以帮一下忙吗,在线等?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhuangbin
2005-05-11
打赏
举报
回复
还有没有其他可以实现的方法呀?
子非鱼0724
2005-05-01
打赏
举报
回复
用names指针数组 保存对方FTP上目录结构,再遍历
ftpjiang() ;AnsiString *names[200]; 在头文件声明运行连接通过
但生成的EXE文件,有点问题。请高手再改改 。读内存错误
子非鱼0724
2005-05-01
打赏
举报
回复
void __fastcall TForm1::Button16Click(TObject *Sender)
{int a=0,b=1;
int j=0;
AnsiString filename[100];
AnsiString * pointer;
NMFTP1->List();
for(int i=0;i<NMFTP1->FTPDirectoryList->name->Count;i++)
{if(NMFTP1->FTPDirectoryList->name->Strings[i]==0)
filename[j++]=NMFTP1->FTPDirectoryList->name->Strings[i]; }
filename[j]=NULL;
names[0]=filename;
while(a<b)
{for(int k=0; ;k++)
{if(*(names[a]+k)==NULL)
break;
pointer=ftpjiang(names[a]+k);
if(pointer==NULL)
names[b++]=pointer;
}
a++;
}
Memo1->Clear();
for(int c=0;c<=b;c++)
{ for(int m=0; ;m++)
{if(*(names[c]+m)==NULL)
break;
NMFTP1->Disconnect();
NMFTP1->Host=Edit1->Text;
NMFTP1->Port=StrToInt(Edit2->Text);
NMFTP1->UserID=Edit3->Text;
NMFTP1->Password=Edit4->Text;
NMFTP1->Connect();
NMFTP1->ChangeDir(*(names[c]+m));
NMFTP1->List();}
if(c>b)
Memo1->Lines->Add("遍历完毕");
}
}
AnsiString * TForm1::ftpjiang(AnsiString *p)
{int j;
AnsiString filenames[50];
NMFTP1->Disconnect();
NMFTP1->Host=Edit1->Text;
NMFTP1->Port=StrToInt(Edit2->Text);
NMFTP1->UserID=Edit3->Text;
NMFTP1->Password=Edit4->Text;
NMFTP1->Connect();
NMFTP1->ChangeDir(*p);
NMFTP1->List();
for(j=0;j<NMFTP1->FTPDirectoryList->name->Count;j++)
{if(NMFTP1->FTPDirectoryList->name->Strings[j]==0)
filenames[j++]=NMFTP1->FTPDirectoryList->name->Strings[j];}
filenames[j]=NULL;
if(j==1) //no filefold
return NULL;
else return filenames;
}
zhuangbin
2005-04-29
打赏
举报
回复
马上就到五一了,先祝大家节日快乐,玩得开心!!
zhuangbin
2005-04-29
打赏
举报
回复
我通过修改dargons(赤龙)的程序发现可以实现二级遍历,具体程序如下:
Memo1->Text="";
NMFTP1->List();
int I,j=0;
AnsiString name[100];
for (I =0; I <= (NMFTP1->FTPDirectoryList->name->Count - 1); I++)
{
if(NMFTP1->FTPDirectoryList->Size->Strings[I]==0)
{
Memo1->Lines->Add(NMFTP1->FTPDirectoryList->name->Strings[I]);
name[j]= NMFTP1->FTPDirectoryList->name->Strings[I];
j++;
}
}
Memo1->Lines->Add(j-2);
Memo1->Lines->Add("二级目录:");
j=j-1;
while(j>1)
{
Memo1->Lines->Add(" ");
NMFTP1->Disconnect(); //重新连接
NMFTP1->Host=Edit1->Text;
NMFTP1->Port=StrToInt(Edit2->Text);
NMFTP1->UserID=Edit3->Text;
NMFTP1->Password=Edit4->Text;
NMFTP1->Connect();
NMFTP1->ChangeDir(name[j]);
Memo1->Lines->Add(NMFTP1->CurrentDir);
Memo1->Lines->Add(name[j--]);
NMFTP1->List();
}
Memo1->Lines->Add("完毕");
但好象只能实现二级,再往下就不行了,大家可以给看一下,下面给怎么进行吗?
希望大家也能给出一段程序来,让兄弟参考一下,先谢了!
NetSpider9804040
2005-04-28
打赏
举报
回复
我也同意楼上的说法,生成一个目录树结构文件,包保到本机,然后按照本机的这个文件列表对结合NMFTP的ChangeDir()方法进行遍历!
zsloyes
2005-04-28
打赏
举报
回复
关注中,最近也准备开发类似的程序
constantine
2005-04-28
打赏
举报
回复
他好像只能通过changedir改变得到所有路径跟文件列表,你可以考虑把那个树结构保存到机子上
zhuangbin
2005-04-28
打赏
举报
回复
大家有没有好的遍历算法,利用一般的遍历方法实现起来好象有一定的困难呀!
它好象每次都只响应一次,不论怎样,它好象都显示的是同一个文件夹之下的目录.
请大家帮忙看一下,谢谢了!!
NetSpider9804040
2005-04-22
打赏
举报
回复
同意楼上,不过NMFTP的list()方法有一定问题!
dargons
2005-04-22
打赏
举报
回复
你可以试一下这段程序:
先将FTP的ParseList属性值为true; 再根据文件的大小,调用NMFTP1->ChangeDir()方法来实现.
Memo1->Text="";
NMFTP1->List();
int I,j=0,J=NMFTP1->FTPDirectoryList->name->Count - 1;
AnsiString name[100];
for (I =0; I <= (NMFTP1->FTPDirectoryList->name->Count - 1); I++)
{
if(NMFTP1->FTPDirectoryList->Size->Strings[I]==0)
{
Memo1->Lines->Add(NMFTP1->FTPDirectoryList->name->Strings[I]);
name[j]= NMFTP1->FTPDirectoryList->name->Strings[I];
j++;
}
}
j=j-1;
while(j>1)
{
Memo1->Lines->Add(name[j]);
NMFTP1->ChangeDir(name[j--]);
NMFTP1->List();
}
Memo1->Lines->Add("完毕");
zhuangbin
2005-04-22
打赏
举报
回复
我刚刚试了一下,好象只能显示其中一个子文件下的目录.
而且用Memo1->Lines->Add(NMFTP1->CurrentDir);进行测试时发现它们都在同一个子文件目录下.
有没有其他可以实现的方法呀??
JAVA
FTP
Client找不到路径
原因分析:传过来的descpath路径包含二级目录,类似于index/secendIndex这样,但
FTP
Clien不支持创建二级目录,所以需要添加一个方法来创建路径。项目中,使用
FTP
做存储服务器,但是配置都没有错误,使用上传或下载到
ftp
的时候还是会报错。循环创建所有目录,进入对应目录。之后将client对象返回即可。断点显示这一行会抛出找不到文件夹的异常。
golang学习篇—
遍历
下载
FTP
文件
业务需求:循环
遍历
FTP
文件夹获取文件后,并发下载
FTP
服务器的文件到本地,删除远程文件,然后继续下一轮扫描,
客户端
有读写权限。 代码如下: package
FTP
import ( "errors" "fmt" "github.com/jlaffaye/
ftp
" "runtime" "sync" "time" ) const ( Data_Size = 1024 ) /...
ftp
之创建目录
最近在做
ftp
上传下载相关的一些东西,下面来记录并分享下通过
ftp
客户端
创建目录的实现: 因需要创建
多级
目录,但是
ftp
客户端
只能创建单级目录,下面稍微做了一个完善: package test; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; impo...
ftp
不能创建
多级
目录【循环创建问题】
关于报表导出用上了
ftp
文件服务器,最开始用字符串存储了文件上传路径,然后使用
ftp
.makedir(path),后来发现好像不能用它自带的方法创建
多级
目录。然后上网查,根据大佬们的博客得到了适用的
多级
目录创建方法。在此可以记录一下。 /** *
ftp
创建目录——
ftp
Client只支持一级一级创建 * * @param
ftp
* @param path * @return * @throws IOException */ boolean makeDir(
FTP
Client
ftp
, Strin.
windows环境下C++
FTP
客户端
(持续优化)
Windows环境下,通过C++将本地指定目录下的所有文件推至
FTP
服务器,并建立同名目录,和服务器建立一次链接,PASV模式请求多个端口用于数据传输
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章