IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Récupérer informations fichier/dossier sur FTP (Récupérer le type : fichier ou dossier)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut Récupérer informations fichier/dossier sur FTP (Récupérer le type : fichier ou dossier)
    Bonjour,
    ce que je souhaiterais faire c'est récupérer une partie des informations retourné par cette fonction (je ne donne pas certaines fonctions comme getrequest ou getdirectory car elles ne sont pas utiles pour ce que je vous demande) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      Public Function ListDirectory(ByVal directory As String) As List(Of String)
            Dim ftp As Net.FtpWebRequest = GetRequest(GetDirectory(directory))
            ftp.Method = Net.WebRequestMethods.Ftp.ListDirectoryDetails
     
            Dim response As String = GetResponse(ftp)
            response = response.Replace(vbCrLf, vbCr).TrimEnd(Chr(13))
            Dim result As New List(Of String)
            result.AddRange(response.Split(Chr(13)))
            Return result
        End Function
    Elle permet de me retourner sous forme de liste chaque fichier ou dossier contenu dans le chemin spécifié du FTP. Cela ressemble à ceci :

    drwx------ 5 web site 184 Jan 13 20:21 .
    drwx------ 9 web site 304 Jan 13 20:19 ..
    -rw-r--r-- 1 web site 13029 Jan 13 20:20 Divers.txt
    drwx------ 2 web site 48 Jan 13 20:20 test

    Je souhaiterai simplement récupérer le chiffre après les "droits" et avant le "web site" mais je ne sais pas comment m'y prendre pour manipuler chaques chaines de caractère.

    Merci d'avance, cordialement,

    AliHome

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    A priori la longueur de la chaîne de caractère concernant les droits est d'une longeur fixe donc ton chiffre est à une position fixe.

    Regarde dans l'aide les différentes fonction de manipulation des strings et ça roule.

    T'es sur que c'est un chiffre est pas un nombre au fait?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2008
    Messages : 161
    Par défaut
    Bonjour,

    Je voudrais savoir si l'expression web site se trouve dans tous les noms de tes fichiers.

    Si c'est le cas tu peux essayer ce bout de code.
    - Je passe en paramètre le nom du fichier
    - Je le split à partir de l'expression web site
    - Je recupère la première partie contenant les droits
    - Je calcule le nombre de caractères contenus dans la chaine récupérée
    - Et comme le chiffre se trouve en dernière position, je fais -1

    c'est en gros ce que j'ai fais. J'espère que je t'ai ouvert une voie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub TraitLigne(ByVal MaLigne As String)
     
            Dim detvar(), LeChiffre As String
            Dim MyLength As Integer
     
     
            detvar = Split(MaLigne, "web site")
            MyLength = Trim(detvar(0)).Length
            LeChiffre = Mid(Trim(detvar(0)), MyLength - 1)
     
            'MsgBox("Le chiffre est :" & LeChiffre)
        End Sub

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Au début de la ligne les différents champs sont séparés par des espaces (ce n'est pas vrai à la fin à cause de la date, mais on peut ignorer ça vu qu'on veut juste le 2e champ). Donc il suffit d'utiliser String.Split :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each line As String In result
        Dim parts As String() = line.Split(" ")
        Dim leNumeroQueTuVeux As String = parts(1)
    Next

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Par défaut
    Merci à vous trois, j'ai pu réussir à faire ce que je souhaitais grace à votre aide !
    Je ne suis pas chez moi donc je n'ai pas mon code sur le moment mais j'éditerai mon post ce soir pour le mettre.

    Bonne journée !

    Voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Public Function FtpGetType(ByVal PathWithDetails As String) As String
            If Not String.IsNullOrWhiteSpace(PathWithDetails) Then
                    Dim parts As String() = PathWithDetails.Split(" ")
                    Return parts(3)
            Else
                Return "0"
            End If
        End Function
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Dim pathtype As Integer = 0
            For Each pathinfo As String In FTP.ListDirectory("/")
                pathtype = FTP.FtpGetType(pathinfo)
            Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire liste des fichiers présent sur FTP
    Par AliHome dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/12/2008, 23h03
  2. Liste des fichiers contenus sur FTP
    Par Maxi-môme dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/09/2007, 10h58
  3. [FTP] Indiquer un chemin vers un dossier sur le C: du serveur?
    Par othland dans le forum Web & réseau
    Réponses: 3
    Dernier message: 24/08/2007, 19h35
  4. Import fichier.txt sur FTP vers MySql
    Par thiper dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 19/06/2006, 10h54
  5. Réponses: 0
    Dernier message: 21/11/2005, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo