Analyse de la ligne FtpWebRequest ListDirectoryDetails
J'ai besoin d'aide avec l'analyse de la réponse de ListDirectoryDetails
en C#.
J'ai seulement besoin de les champs suivants.
- Nom De Fichier/Nom Du Répertoire
- Date De Création
- et la Taille du Fichier.
Voici ce que certains de l'lignes ressembler quand je lance ListDirectoryDetails
:
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
Merci d'avance.
source d'informationauteur zSynopsis | 2009-06-18
Vous devez vous connecter pour publier un commentaire.
Vous ne savez pas si vous avez encore besoin de cela, mais c'est la solution je suis venu avec:
Correspondent À Des Groupes:
Pour cette liste, le code suivant va faire:
Vous obtiendrez (à compter de l'année 2016):
Mais, en fait en essayant d'analyser la liste retournée par la
ListDirectoryDetails
n'est pas la bonne façon de faire.Vous souhaitez utiliser un client FTP qui supporte le moderne
MLSD
de commande qui retourne une liste de répertoires dans un format lisible en machine spécifiée dans le RFC 3659. L'analyse du format lisible par l'homme retourné par les anciensLIST
de commande (utilisé en interne par leFtpWebRequest
pour sonListDirectoryDetails
méthode) doit être utilisé comme une option de dernier recours, lorsque l'on parle à obsolètes serveurs FTP, qui ne prennent pas en charge laMLSD
de commande (comme Microsoft IIS serveur FTP).Plusieurs serveurs utilisent un format différent pour la
LIST
en réponse à la commande. En particulier IIS pouvez utiliser le format ms-DOS. Voir C# classe pour analyser WebRequestMethods.Ftp.ListDirectoryDetails réponse FTP.Par exemple avec WinSCP .NET de l'assembléevous pouvez utiliser ses
Session.ListDirectory
ouSession.EnumerateRemoteFiles
méthodes.Ils utiliser à l'interne de la
MLSD
de commande, mais peuvent revenir à laLIST
de commandement et de soutien des douzaines de différents lisible liste des formats.Le retour de l'inscription est présentée comme la collecte de
RemoteFileInfo
des instances avec des propriétés comme:Name
LastWriteTime
(avec le bon fuseau horaire)Length
FilePermissions
(analysée dans les droits individuels)Group
Owner
IsDirectory
IsParentDirectory
IsThisDirectory
(Je suis l'auteur de WinSCP)
La plupart des autres 3ème partie les bibliothèques vont faire de même. À l'aide de la
FtpWebRequest
de la classe n'est pas fiable à cet effet. Malheureusement, il n'y a pas d'autre client FTP intégré dans la .NET framework.C'est mon algorithme pour obtenir le Fichier/Dir nom, la Date de création de l'Attribut(Fichier/Dir), la Taille.
Espérons que cela aide...
Bâtiment sur les regex idée de Ryan Conradc'est ma dernière lecture de code:
Et la FtpFileInfo de classe rempli: