Bonjour,

Je souhaiterais stocker dans une liste la liste de mes dossiers et fichiers, le tout dans une arborescence relative.

Par exemple, actuellement j'ai :

Code : 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
 
public List<string> DirSearch(string sDir)
{
 
    foreach (string d in Directory.GetDirectories(sDir))
    {
        lstFilesFound.Add(d);
        foreach (string f in Directory.GetFiles(d, "*.*"))
        {
            lstFilesFound.Add(f);
        }
        DirSearch(d);
    }
 
    return lstFilesFound;
}
Ça me retourne :
Si mon sDir est : "C:\Truc\Toto"

C:\Truc\Toto\Test.jpg
C:\Truc\Toto\truc\Test.jpg
C:\Truc\Toto\bidule\machin
C:\Truc\Toto\bidule\machin\2.txt
C:\Truc\Toto\bidule\machin\3.txt

Le truc c'est que je voudrais :

Toto\Test.jpg
Toto\truc\Test.jpg
Toto\bidule\machin
Toto\bidule\machin\2.txt
Toto\bidule\machin\3.txt

J'ai besoin de ça car je voudrais uploader récursivement le dossier sur un serveur FTP (http://ftplib.codeplex.com/) mais pour le coup il crée des répertoire contenant C:\Truc\Toto\...

Voici la méthode pour l'upload si jamais :

Code : 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
 
public void UploadFile(string p)
{
 
    List<string> lst = DirSearch(p);
 
    foreach(string l in lst)
    {
        Console.WriteLine(l);
    }
    Directory.SetCurrentDirectory(p);
 
    foreach (string file in lst)
    {
        string fullPath = Path.GetDirectoryName(file);
 
        if (File.Exists(file))
        {
            ftp.PutFile(file, Path.GetFileName(file));
        }
        else
        {
            string lastFolderName = Path.GetFileName(file);
            ftp.CreateDirectory(lastFolderName);
            ftp.SetCurrentDirectory(lastFolderName);
        }
    }
}
Et en python j'utilise cette méthode (que j'essaye de "convertir" en C#):

Code : 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
 
def upload(self, path):
    files = os.listdir(path)
    os.chdir(path)
    for f in files:
        if os.path.isfile(path + r'\{}'.format(f)):
            fh = open(f, 'rb')
            self.current_file = f
            self.ftp.storbinary('STOR %s' % f, fh, 8192, callback=self.avancement)
            fh.close()
        elif os.path.isdir(path + r'\{}'.format(f)):
            self.ftp.mkd(f)
            self.ftp.cwd(f)
            self.upload(path + r'\{}'.format(f))
    self.ftp.cwd('..')
    os.chdir('..')
Merci d'avance.