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

C# Discussion :

Comment changer le repertoire courant?


Sujet :

C#

  1. #1
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut Comment changer le repertoire courant?
    Bonjour,
    Voici un code qui me permet de me connecter a un serveur FTP et de lister les repertoires a la racine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FtpWebRequest ftpRequest = WebRequest.Create("ftp://URI") as FtpWebRequest;
                ftpRequest.Credentials = new NetworkCredential("username", "password");
                //3. Settings and action
                ftpRequest.KeepAlive = false;
                 // On défini le type de requête
                ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
                FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
                StreamReader streamR = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string ss = streamR.ReadToEnd();
                string[] liste = ss.Split(Environment.NewLine.ToCharArray());
    Comment changer le repertoire courant? Je nai pas trouve de propriete equivalente. Je voudrais tester lexistence dun repertoire dans le tableau de string et si ce dernier existe, le passer en repertoire courant.

    Merci de vos reponses.

    Nixar

  2. #2
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut
    Voila une version simplifiee de ce dont je me suis servi pour un de mes projets; la partie interessante est la methode CreateSubDirectories(Ftp ftpToUpload)
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    public class Ftp
    {
        private string _Host;
        private string _Login;
        private string _Password;
        private string _Directory;
     
        public string login {
            get {
                return _Login;
            }
            set {
                _Login = value;
            }
        }
        public string password {
            get {
                return _Password;
            }
            set {
                _Password = value;
            }
        }
        public int port {
            get {
                return _Port;
            }
            set {
                _Port = value;
            }
        }
        public string directory {
            get {
                return _Directory;
            }
            set {
                _Directory = value;
            }
        }
    }

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public override void UploadFileToFtp(string ftpServerUri, string completeLocalPath, Ftp ftpToUpload)
    {
      CreateSubDirectories(ftpToUpload);
     
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServerUri);
      request.Credentials = new NetworkCredential(ftpToUpload.login, ftpToUpload.password);
      //Le reste de ton traitement
     
    }
     
    private static void CreateSubDirectories(Ftp ftpToUpload)
    {
      IList<string> subDirListWithoutEmptyString = ftpToUpload.directory.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
      StringBuilder subDirBuilder = new StringBuilder();
                for (int i = 0; i < subDirListWithoutEmptyString.Count; i++)
                {
                    if (!String.IsNullOrEmpty(subDirListWithoutEmptyString[i]))
                    {
                        if (i > 0)
                        {
                            subDirBuilder.Append("/" + subDirListWithoutEmptyString[i-1]);
                        }
     
                        String uriDirectory = ftpToUpload.host + subDirBuilder;
                        IList<string> lstSubDir = GetListSubDir(uriDirectory, ftpToUpload);
     
                        if (lstSubDir != null)
                        {
                            if (!lstSubDir.Contains(subDirListWithoutEmptyString[i])) //if subdir does not exist --> Creation
                            {
                                FtpWebRequest requestCreateDirectory = (FtpWebRequest)WebRequest.Create(uriDirectory + "/" +subDirListWithoutEmptyString[i]);
                                requestCreateDirectory.Credentials = new NetworkCredential(ftpToUpload.login, ftpToUpload.password);
                                requestCreateDirectory.KeepAlive = false;
                                requestCreateDirectory.Method = WebRequestMethods.Ftp.MakeDirectory;
                                using (FtpWebResponse responseCreateDirectory = (FtpWebResponse)requestCreateDirectory.GetResponse())
                                {
                                    responseCreateDirectory.Close();
                                }
                            }
                        }
                    }
                }
    }

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu peux aussi t'orienter vers une bibliothèque FTP tiers, comme par exemple edtFTPnet.

  4. #4
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut
    Bonjour,
    merci de vos réponses.
    @ Nip :ton code répond à une question que je me posais : en somme pour toute modification du répertoire de travail, la création d'une nouvelle FtpWebRequest est nécessaire... Si je ne me trompe pas c'est ce qu'il y a de plus simple.

    Je vais regarder du côté d'une bibliothèque tiers également.

    Merci !

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/08/2017, 18h45
  2. changer le repertoire courant par défaut avant getopenfilename
    Par sambinapas dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/12/2010, 14h38
  3. [C#] Comment connaitre le répertoire courant d'exécution ?
    Par romstarr dans le forum Services Web
    Réponses: 4
    Dernier message: 30/08/2009, 17h37
  4. Réponses: 2
    Dernier message: 07/06/2008, 16h53
  5. changer le repertoire courant d'un fichier
    Par Iria77 dans le forum Général Python
    Réponses: 3
    Dernier message: 27/09/2006, 11h17

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