1

我正在使用 FtpWebRequest 连接到 FTP 服务器,并且可以使用 WebRequestMethods.Ftp.ListDirectoryDe​​tails 列出目录详细信息。然而,来自远程服务器的响应有日期、月份和时间,但没有年份:

-rw-rw-rw- 1 用户组 949 Jun 2 08:43 Unsubscribes_20100602.zip

-rw-rw-rw- 1 用户组 1773 Jun 1 06:48 export_142571709.txt

-rw-rw-rw- 1 用户组 1773 Jun 1 06:50 export_142571722.txt

-rw-rw-rw- 1 用户组 980 Jun 1 06:51 export_142571734.txt

这是我正在编写的应用程序所必需的,因此我尝试使用 WebRequestMethods.Ftp.GetDateTimestamp 来获取每个文件的日期时间戳,但响应始终为空。不会抛出异常。

try
{
    FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(path);

    ftp.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    try
    {
        Stream stream = ftp.GetResponse().GetResponseStream();
        StreamReader sReader = new StreamReader(stream);

        return sReader;
    }
    catch (Exception exp)
    {
        throw new Exception(String.Format("An error occured getting the timestamp for {0}: {1}<br />", path, exp.Message));
    }
}

有没有人知道为什么会这样?

4

1 回答 1

3

GetDateTimestamp方法不会在正常流中返回其数据。就像文件大小方法在标题/属性中返回其数据一样ContentLength,该GetDateTimestamp方法的数据在LastModified标题/属性中。

    FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(path);

    ftp.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    try
    {
       using(FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
       {
           return response.LastModified;
       }
    }
    catch
    {
        throw new Exception(String.Format("An error occured getting the timestamp for {0}: {1}<br />", path, exp.Message));
    }

顺便说一句,您也可以检查答案。

于 2010-06-14T09:43:42.727 回答