Comment obtenir la date de dernière modification des fichiers sur le serveur FTP
C'est mon code
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(FTPAddress);
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
List<string> directories = new List<string>();
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = streamReader.ReadLine();
}
Comme vous le voyez, je suis en utilisant ListDirectoryDetails
.
Pour chaque ligne dans le directories
, c'est le contenu:
ftp://172.28.4.7//12-22-14 01:21PM 9075 fileName.xml
Ma question est de savoir comment obtenir le temps à partir de cette ligne? Dois-je analyser la chaîne? Je ne le pense pas, car j'ai lu qu'il y est le LastModified
bien, mais je ne sais pas comment l'utiliser.
Pourriez-vous m'aider s'il vous plaît?
- Vérifiez ceci: stackoverflow.com/questions/4454281/...
- j'ai déjà vérifié, mais je ne pouvais pas la mettre en œuvre
- merci les gars, cette question n'est pas dupliqué, veuillez lire
- u ne voir la différence entre les deux s'il vous plaît? et avez-vous lu la question? dans la quetion je l'ai mentionné qu'il ya de l'
lastModified
, mais ne pouvait pas savoir comment l'utiliser - Ok. Eh bien je suppose que le seul moyen pour ce faire est l'interrogation de chaque fichier afin d'obtenir son fichier de détails. La liste des résultats donne que peu de détails. Doit être formaté dans l'OS de façon spécifique trop. Pour obtenir tous les détails de chaque fichier, vous avez à la requête pour chaque fichier spécifique. (désolé pour le marquage des doublons, j'ai pensé qu'il était lors de la première).
- je sais tout ce que vous avez dit, mais je ne sais pas comment le faire en c#. c'est ce que j'essaie de dire depuis une heure 🙂
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'y a pas vraiment de moyen fiable et efficace pour récupérer le timestamp de modification de tous les fichiers d'un répertoire en utilisant les fonctionnalités offertes par .NET framework, car il ne prend pas en charge le FTP
MLSD
de commande. LeMLSD
de commande fournit une liste de répertoire distant dans un format normalisé format lisible en machine. La commande et le format est standardisé par RFC 3659.Solutions de rechange que vous pouvez utiliser, qui sont pris en charge par .NET framework:
ListDirectoryDetails
méthode (le FTPLIST
de commande) pour extraire des informations de tous les fichiers dans un répertoire et vous traiter avec serveur FTP format spécifique des détailsDOS/Windows format: C# classe pour analyser WebRequestMethods.Ftp.ListDirectoryDetails réponse FTP
*nix format: L'analyse FtpWebRequest ListDirectoryDetails ligne
GetDateTimestamp
méthode (le FTPMDTM
de commande) à titre individuel, de récupérer des horodateurs pour chaque fichier. Un avantage est que la réponse est normalisé par RFC 3659 àYYYYMMDDHHMMSS[.sss]
. Un inconvénient est que vous devez envoyer une demande distincte pour chaque fichier, ce qui peut être tout à fait inefficace. Cette méthode utilise laLastModified
de la propriété que vous mentionnez:Alternativement, vous pouvez utiliser une 3ème partie client FTP de mise en œuvre qui prend en charge le moderne
MLSD
commande.Par exemple WinSCP .NET de l'assemblée prend en charge que.
(Je suis l'auteur de WinSCP)
Essayez d'utiliser ce code à partir de MS documentation:
http://msdn.microsoft.com/en-us/library/system.net.ftpwebresponse.lastmodified%28v=vs.110%29.aspx
Vous devez le faire pour chaque fichier.
Pour ce faire, il n'est pas simple non plus. Vous devez analyser le résultat de votre liste de répertoire réponse.
Vérifier comment ce mec faire: L'extraction des noms de fichier de WebRequestMethods.Ftp.ListDirectoryDetails
Vous devriez être en mesure de faire un foreach sur chaque ligne lue.