2009-06-24 2 views
7

Ich bin auf der Suche nach einem kurzen Beispielcode, der den Namespace System.Net.FtpWebRequest verwendet, um den Zeitstempel einer angegebenen Remote-Datei auf einem FTP-Server abzurufen. Ich weiß, dass ich die Method-Eigenschaft meines Anforderungsobjekts auf WebRequestMethods.Ftp.GetDateTimestamp festlegen muss, aber ich bin mir nicht sicher, wie die Antwort wieder in ein System.DateTime-Objekt abgerufen werden kann.System.Net.FtpWebRequest GetDateTimestamp Beispiel

Antwort

14

Yep - das ist ziemlich viel, was ich mit endete. Ich ging mit so etwas wie diese

request = FtpWebRequest.Create("ftp://ftp.whatever.com/somefile.txt"); 

request.Method = WebRequestMethods.Ftp.GetDateTimestamp; 
request.Proxy = null; 

using (FtpWebResponse resp = (FtpWebResponse)request.GetResponse()) 
{ 
     Console.WriteLine(resp.LastModified); 
} 
+0

Sehr guter Punkt, ich vermisse diese Liegenschaft. – arbiter

+1

Ein Problem bei diesem Ansatz: Die Zeit wird automatisch in die aktuelle Zeitzone des Clients und nicht in die Zeitzone des Servers konvertiert. Ich fand, dass ich WebRequestMethods.Ftp.ListDirectoryDetails verwenden musste, und analysiere das Zeitlimit der Zeile, in der die Datei gefunden wurde, um das Änderungsdatum der Zeitzone des Servers zu erhalten. – NightOwl888

1

Etwas wie folgt aus:

DateTime DateValue;  

FtpWebRequest Request = (FtpWebRequest)WebRequest.Create(yourUri); 
Request.Method = WebRequestMethods.Ftp.GetDateTimestamp; 
Request.UseBinary = false; 

using (FtpWebResponse Response = (FtpWebResponse)Request.GetResponse()) 
using (TextReader Reader = new StringReader(Response.StatusDescription)) 
{ 
    string DateString = Reader.ReadLine().Substring(4); 
    DateValue = DateTime.ParseExact(DateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture.DateTimeFormat); 
} 
1

Um nur das Datumsfeld zu erhalten, aber nicht die Zeit, genau das tun, wie die ersten Antwort in diesem Thread mit folgenden Ausnahme:

Console.WriteLine(response.LastModified().ToShortDateString);