这个问题已经在这里有了答案:

如何下载FTP服务器的最早文件?

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.47.1/DocXML");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("Igor", "");

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

string names = reader.ReadLine();

textBox12.Text = names; 

===============>>#1 票数:1 已采纳

如何下载FTP服务器的最早文件?

使用WebRequestMethods.Ftp.ListDirectoryDetails

这将发出带有请求的FTP LIST命令,以在单个请求中获取有关文件的详细信息。 但这并没有使事情变得容易,因为您将不得不解析这些行,并且它们没有标准格式。

根据ftp服务器的不同,它可能以以下格式返回行:

08-10-11  12:02PM       <DIR>          Version2
06-25-09  02:41PM            144700153 image34.gif
06-25-09  02:51PM            144700153 updates.txt
11-04-10  02:45PM            144700214 digger.tif

要么

d--x--x--x    2 ftp      ftp          4096 Mar 07  2002 bin
-rw-r--r--    1 ftp      ftp        659450 Jun 15 05:07 TEST.TXT
-rw-r--r--    1 ftp      ftp     101786380 Sep 08  2008 TEST03-05.TXT
drwxrwxr-x    2 ftp      ftp          4096 May 06 12:24 dropoff

甚至其他格式。

这篇博客文章“用于解析ListDirectoryDe​​tails的FtpwebRequest响应的示例代码”提供了处理几种格式的示例。

如果您知道格式是什么,只需为其创建一个自定义的最小行解析器。

结合使用WebRequestMethods.Ftp.ListDirectoryWebRequestMethods.Ftp.GetDateTimestamp

这比较容易,但是缺点是您需要提交多个请求以查找目录条目的最后修改日期。

这将为您提供仅包含名称的文件和目录条目列表,更易于解析。

public static IEnumerable<string> ListDirectory(string uri, NetworkCredential credentials)
{
    var request = FtpWebRequest.Create(uri);
    request.Method = WebRequestMethods.Ftp.ListDirectory;
    request.Credentials = credentials;
    using (var response = (FtpWebResponse)request.GetResponse())
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream, true))
    {
        while (!reader.EndOfStream)
            yield return reader.ReadLine();
    }
}

然后,对于每个文件,可以通过对每个文件发出请求来获得最后的修改日期:

public static DateTime GetLastModified(string fileUri, NetworkCredential credentials) 
{
    // error checking omitted
    var request = FtpWebRequest.Create(fileUri);
    request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
    request.Credentials = credentials;
    using (var response = (FtpWebResponse)request.GetResponse())
        return response.LastModified;
}

现在,您只需执行以下操作即可获取文件的最后修改日期列表。

var credentials = new NetworkCredential("Igor", "");
var filesAndDates = ListDirectory("ftp://192.168.47.1/DocXML", credentials)
    .Select(fileName => new {
        FileName = fileName,
        LastModified = GetLastModified("ftp://192.168.47.1/DocXML/" + fileName, credentials)
    })
    .ToList();
// find the oldest entry.
var oldest = filesAndDates.OrderBy(x => x.LastModified).FirstOrDefault();

  ask by garci translate from so

未解决问题?本站智能推荐:

1回复

从Linux FTP服务器和Windows FTP服务器下载最早的文件

我想从FTP服务器上的目录下载最早的文件。 我正在使用FtpWebrequest连接到FTP服务器以获取目录中的文件列表。 我使用WebRequestMethods.Ftp.ListDirectoryDetails来做到这一点。 知道文件名后,我将创建另一个FTP连接来下载该文件。
1回复

从FTP服务器下载最新文件

我必须从FTP服务器下载最新文件。 我知道如何从计算机上下载最新文件,但不知道如何从FTP服务器上下载文件。 如何从FTP服务器下载最新文件? 这是我从计算机上下载最新文件的程序 好的,使用此代码,我知道最后一个文件的日期,但是我如何知道此文件的名称?
1回复

自动下载FTP服务器中的文件

我对C#没有任何了解,但是我需要创建一个FTP服务器来自动下载文件列表(从最后到第一个,一个一个地下载),因此我下载了一些FTP服务器的源代码,并且功能最强大我发现有一个小问题,我的任务是让服务器自动下载文件,但是我得到的代码打开一个窗口来选择保存文件的位置。 如何更改它以自动下载文件?
4回复

正在上传文件时,从ftp服务器下载文件

我需要使跨不同域的不同FTP服务中种类繁多的文件的pull(get)自动化,并以24/7为基础接收文件。 我的问题是,一般来说,FTP服务允许在文件尚未上传的情况下下载文件。 这是可以在Internet上找到的该问题的参考之一。 这可能会导致文件下载不完整。 我尝试使用Win
2回复

FTP服务器生成“错误:150打开文件下载的数据通道”

我已经编写了用于将文件从FTP服务器传输到本地服务器的代码,并且在传输2或3个文件后,它引发异常错误远程服务器返回错误:150打开用于下载文件的数据通道 在FileZila中成功传输了所有文件,但在ASP.NET应用程序中出现错误。 我执行以下代码
3回复

在FTP服务器上使用“ DirectoryInfo”

我会使用以下指令: 但是我不能。 如何使用("ftp://192.168.47.1/DocXML"); 带有new System.IO.DirectoryInfo(""); ? 这是代码
2回复

如何使用FtpWebRequest正确断开与FTP服务器的连接

我创建了一个ftp客户端,它在白天连接了几次,从FTP服务器检索日志文件。 问题是几个小时后我收到来自FTP服务器的错误消息(达到-421会话限制..)。 当我检查与netstat的连接时,我可以看到几个'ESTABLISHED'连接到服务器,即使我已“关闭”连接。 当我尝试通过命
2回复

使用C#将文件列表从ftp下载到本地文件夹? [重复]

这个问题已经在这里有了答案: 如何在C#中使用FTP列出目录内容? 7个答案 我希望将ftp中的所有文件下载到我的本地文件夹中。一旦下载到本地驱动器,所有文件都应在ftp中删除。 从下面的代码 我只能从不期望的ftp下载文件 我需要将所有文
1回复

150打开文件的数据通道从服务器下载

我使用带有C#的ASP.net制作了文件传输应用程序,在其中将文件从FTP位置传输到服务器位置。 从过去的5年以来,这一切都很好,但是从那以后,我的错误就越来越小了。 远程服务器返回错误:150正在打开数据通道,用于从服务器下载文件 我正在使用的代码如下 我还尝
3回复

在.net中通过FTP发送文件

我希望使用已经耗尽该服务器的进程将文件从服务器上的目录移动到文件共享。 我想知道使用ftp协议执行此操作的最佳方法。 我最初对如何执行此操作的想法是使用System.Net.FtpWebRequest ...我可能最终会使用它,但是看起来可能存在一些问题。 要了解我的意思,请查看以下链