Bonjour,
Ma question est plus théorique que technique, j'espère que vous pourrez m'aider.
Dans mon application j'ai une fonction récursive qui parcours une arborescence d’un CD est stock la structure de celui-ci dans une table.
Pour préserver la hiérarchie la structure de la table est la suivante : Table(Id , Nom, Type, Id_parent). La colonne « Nom » correspond au nom du fichier ou du répertoire, la colonne Type correspond à l’extension du fichier (en cas de répertoire Type = REP), la colonne "Id_parent" correspond au parent du fichier ou dossier (repertoire parent).
Pour chaque Répertoire, une requête l’insère dans la table et retourne l’ID de l’objet inséré pour qu’il soit utilisé comme parent du prochain élément. Mais quand la fonction atteint les feuilles de l’arborescence, en remontant je perd le parent.
La fonction "createContents" permet de créer un fichier ou un dossier dans la table.
Voici le code de ma fonction récursive :
Voici le code de la fonction appelant la fonction récursive :
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
29
30
31
32
33
34
35
36
37
38
39 private void WalkDirectoryTree(System.IO.DirectoryInfo root, int monParent) { System.IO.FileInfo[] files = null; System.IO.DirectoryInfo[] subDirs = null; try { files = root.GetFiles("*.*"); } catch (UnauthorizedAccessException e) { labError.Text = e.Message; } catch (System.IO.DirectoryNotFoundException e) { labError.Text = e.Message; } if (files != null) { foreach (System.IO.FileInfo fi in files) { createContents(fi, monParent); } } subDirs = root.GetDirectories(); if (subDirs != null) { foreach (System.IO.DirectoryInfo dirInfo in subDirs) { monParent = createContents(dirInfo, monParent); WalkDirectoryTree(dirInfo, monParent); } } }
merci par avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 rivate void populateMarketingKitContent(string path) { System.IO.DirectoryInfo rootDir = new DirectoryInfo(path); parentIndex = 0; //0 = racine WalkDirectoryTree(rootDir, parentIndex); }
Partager