我正在使用FtpWebRequest连接到FTP服务器,我可以使用WebRequestMethods.Ftp.ListDirectoryDetails列出目录详细信息。但是,远程服务器的响应有日,月和时间,但不是年:
-rw-rw-rw- 1个用户组949 Jun 2 08:43 Unsubscribes_20100602.zip
-rw-rw-rw- 1个用户组1773年6月1日06:48 export_142571709.txt
-rw-rw-rw- 1个用户组1773年6月1日06:50 export_142571722.txt
-rw-rw-rw- 1个用户组980 Jun 1 06:51 export_142571734.txt
这是我正在编写的应用程序所必需的,所以我尝试使用WebRequestMethods.Ftp.GetDateTimestamp来获取每个文件的datetimestamp,但响应始终为空。没有例外。
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));
}
}
有没有人知道为什么会这样?
答案 0 :(得分: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));
}
顺便说一下你也可以查看this个答案。