c# - 列出 FTP 目录中的前 N ​​个文件

标签 c# .net ftp ftpwebrequest

我需要从 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.

没有。您必须检索整个目录列表并随后选择“前 100 个文件”。正如您已经在做的那样。

关于c# - 列出 FTP 目录中的前 N ​​个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49218047/

相关文章:

hadoop - 使用 FTP Over Hadoop 处理大文件

python - 如何使用 python 创建 csv 文件直接到 ftp 服务器?

c# - 使用流从 C# 中的 mssql 中获取图像

c# - 为什么 ASP.NET 页面是空的,但对于用户控件 (.ascx)?

c# - 使用 OpenFileDialog 属性时仅获取文件名 "FileName"

c# - 如何用表达式参数实现方法c#

c# - 如何在 Linq to sql 中使用表提示

c# - 当 'object' 的某个字段可以有多种类型时,如何访问它而不将其转换为一种类型?

c# - XSLT 输出中的与号问题

python - EOF 发生在违反 Python ftplib 协议(protocol)的情况下