列出 FTP 目录中的前 N 个文件
Listing top N files from FTP directory
我需要从 FTP 目录读取前 100 个文件并在下载后处理这些文件。
我不能依赖第一次调用时获得的完整文件列表,因为在处理过程中会添加和删除一些新文件。当目录中有新文件时,我的程序预计会保留 运行。
我编写了以下代码来读取所有文件并只从中提取前 100 个。
List<FileHolder> list = new List<FileHolder>();
int filesToRead = 100;
FtpWebRequest ftpRequest = GetFtpRequest(directoryPath);
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
using (Stream responseStream = ftpResponse.GetResponseStream())
{
if (responseStream != null)
{
using (StreamReader reader = new StreamReader(responseStream))
{
var line = reader.ReadLine();
while (line != null)
{
var split = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (split.Length > 3)
{
var fileName = split[split.Length-1];
if (!string.IsNullOrEmpty(fileName) && split[2].ToLower() != "<dir>" && line.Contains(".xml"))
{
var ftpFile = new FileHolder
{
FileName = fileName
};
list.Add(ftpFile);
//break on desired max number of files
if (list.Count == filesToRead)
{
break;
}
}
}
line = reader.ReadLine();
}
}
}
}
ftpResponse.Close();
是否有任何其他方式或特定的 FTP 方法只获取顶部 N
文件,因为我必须反复调用此方法。
Is there any other way or specific FTP method to get only top N files because I have to call this method iteratively.
没有。您必须检索整个目录列表,然后 select 您的 "top 100 files"。就像你已经在做的那样。
我需要从 FTP 目录读取前 100 个文件并在下载后处理这些文件。
我不能依赖第一次调用时获得的完整文件列表,因为在处理过程中会添加和删除一些新文件。当目录中有新文件时,我的程序预计会保留 运行。
我编写了以下代码来读取所有文件并只从中提取前 100 个。
List<FileHolder> list = new List<FileHolder>();
int filesToRead = 100;
FtpWebRequest ftpRequest = GetFtpRequest(directoryPath);
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
using (Stream responseStream = ftpResponse.GetResponseStream())
{
if (responseStream != null)
{
using (StreamReader reader = new StreamReader(responseStream))
{
var line = reader.ReadLine();
while (line != null)
{
var split = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (split.Length > 3)
{
var fileName = split[split.Length-1];
if (!string.IsNullOrEmpty(fileName) && split[2].ToLower() != "<dir>" && line.Contains(".xml"))
{
var ftpFile = new FileHolder
{
FileName = fileName
};
list.Add(ftpFile);
//break on desired max number of files
if (list.Count == filesToRead)
{
break;
}
}
}
line = reader.ReadLine();
}
}
}
}
ftpResponse.Close();
是否有任何其他方式或特定的 FTP 方法只获取顶部 N
文件,因为我必须反复调用此方法。
Is there any other way or specific FTP method to get only top N files because I have to call this method iteratively.
没有。您必须检索整个目录列表,然后 select 您的 "top 100 files"。就像你已经在做的那样。