[英]Call FtpClient once to list directories recursively
我有一个递归函数:
class FtpFolder{
public void ListChildren(IFolder folder)
{
Uri uri = new Uri("ftp://127.0.0.1/");
FtpClient ftpClient = new FtpClient();
ftpClient.Host = uri.Host;
ftpClient.Credentials = new NetworkCredential("UserLocal", "1234");
ftpClient.SetWorkingDirectory(folder.FullName);
foreach (FtpListItem item in ftpClient.GetListing(ftpClient.GetWorkingDirectory(), FtpListOption.Modify | FtpListOption.Size))
{
switch (item.Type)
{
case FtpFileSystemObjectType.Directory:
FtpFolder ftpSubFolder = new FtpFolder(item);
folder.Folders.Add(ftpSubFolder);
ListChildren(ftpSubFolder);
break;
case FtpFileSystemObjectType.File:
folder.Files.Add(new FtpFile() { Item = item });
break;
}
}
}
}
这是我的班级联系
class Connection{
private uri Uri;
private string Username;
private string Password
public connection(uri _uri, string _username, _password){
_uri=Uri; _username=Username; _password=Password;
}
public void connect(){
}
}
我使用此递归函数列出FTP服务器上的所有文件。 我的问题是我可以重用FtpClient
的单个实例,所以不需要继续创建新实例吗?
尝试这个:
public void ListChildren(IFolder folder)
{
FtpClient ftpClient = new FtpClient
{
Host = new Uri("ftp://127.0.0.1/").Host,
Credentials = new NetworkCredential("UserLocal", "1234");
};
ftpClient.SetWorkingDirectory(folder.FullName);
ListChildren(ftpClient, ftpClient.GetWorkingDirectory());
}
private void ListChildren(FtpClient ftpClient, IFolder folder)
{
foreach (FtpListItem item in folder, FtpListOption.Modify | FtpListOption.Size))
{
switch (item.Type)
{
case FtpFileSystemObjectType.Directory:
FtpFolder ftpSubFolder = new FtpFolder(item);
folder.Folders.Add(ftpSubFolder);
ListChildren(ftpSubFolder);
break;
case FtpFileSystemObjectType.File:
folder.Files.Add(new FtpFile { Item = item });
break;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.