2010-09-30 4 views
1

Je crée un programme dans lequel je dois rechercher un serveur FTP et télécharger tous les fichiers correspondant à une regex donnée. Comment puis-je faire cela? Je peux me connecter au serveur FTP, mais comment puis-je analyser tous les fichiers dans le chemin donné pour les fichiers correspondant à la regex?Recherche de tous les fichiers pour les fichiers correspondant à la regex sur le serveur FTP en C# .NET

Je dois aussi faire la même chose pour les serveurs HTTP, ce qui me semble fondamentalement plus difficile, mais je vais m'en tenir au serveur FTP pour l'instant.

Merci

+0

Quelles classes vous utilisez pour vous connecter au serveur FTP? – Gimly

+0

J'utilise FtpWebRequest (using System.Net), mais s'il y a une alternative plus facile, ça ne me dérange pas de changer ça. – Chris

Répondre

3

Vous pouvez l'utiliser pour obtenir une liste

public string[] GetFileList() 
    { 
     string[] downloadFiles; 
     StringBuilder result = new StringBuilder(); 
     FtpWebRequest reqFTP; 
     try 
     { 
      reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/")); 
      reqFTP.UseBinary = true; 
      reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
      reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; 
      WebResponse response = reqFTP.GetResponse(); 
      StreamReader reader = new StreamReader(response.GetResponseStream()); 

      string line = reader.ReadLine(); 
      while (line != null) 
      { 
       result.Append(line); 
       result.Append("\n"); 
       line = reader.ReadLine(); 
      } 
      // to remove the trailing '\n' 
      result.Remove(result.ToString().LastIndexOf('\n'), 1); 
      reader.Close(); 
      response.Close(); 
      return result.ToString().Split('\n'); 
     } 
     catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.Message); 
      downloadFiles = null; 
      return downloadFiles; 
     } 
    } 

puis maipulate GetFileList tableau en utilisant l'expression rationnelle selon vos besoins

+0

Fantastique, merci :) – Chris

0

FTP a une liste (ls) commande - toute bibliothèque que vous utilisez doit avoir une méthode correspondante, cela renvoie une liste de fichiers dans le répertoire courant.

Vous pouvez faire correspondre à cette liste et récupérer uniquement les fichiers correspondants.

Sans connaître la bibliothèque exacte que vous utilisez, il est difficile d'obtenir plus de détails.

Questions connexes