Bonjour,

Voila je suis en train de développer "une moulinette" qui va scanner une arborescence de fichiers pour me sortir des info (tailles, nb de fichier / dossiers, ...)
Seulement voila ce sont de très grosses arborescences et bien évidement ça dépasse la limite des 250/260 caractères en fonction si c'est un nom de fichier ou de dossier...

Savez-vous comment contourner cette limite ?
J'ai chercher des fonctions Unicode qui gère + de 32000 caractères mais je n'arrive pas à les utiliser...

je vous mets mon code à ce jour qui fonctionne mais est limité, quelqu'un saurai-t-il m'aider ?

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
 
        public static string errFile = ConfigurationManager.AppSettings["errFile"];
        public static string suiviFile = ConfigurationManager.AppSettings["suiviFile"];
        public static string resultFile = ConfigurationManager.AppSettings["resultFile"];
        public static string fichierListe = ConfigurationManager.AppSettings["fichierListe"];
        public static string pathShare= ConfigurationManager.AppSettings["pathShare"];
        public static long nbFiles = 0;
        public static long nbFolders = 0;
        public static bool error = false;
        public static long size = 0;
        static void Main(string[] args)
        {            
                using (FileStream fs = System.IO.File.Create(errFile))
                {
                    fs.Close();
                }
                using (FileStream fs = System.IO.File.Create(suiviFile))
                {
                    fs.Close();
                }
                using (FileStream fs = System.IO.File.Create(resultFile))
                {
                    fs.Close();
                }
                string entete = "FolderName; Size; Folders; Files";
                WriteFileStrUnicode(entete, resultFile);
                try
                {
                    mapDrive("X:", pathShare);
                }
                catch (Exception ex)
                {
                    WriteFileStrUnicode(ex.Message, errFile);
                    Console.WriteLine(DateTime.Now + " : " + ex.Message);
                    Console.WriteLine("Press any key to exit.");
                    Console.ReadKey();
                }
                string[] lines = System.IO.File.ReadAllLines(Environment.CurrentDirectory + "\\" + fichierListe, Encoding.GetEncoding("iso-8859-1"));
                foreach (string line in lines)
                {
                    nbFiles = 0;
                    nbFolders = 0;
                    getInfo(line);                     
                }
                try
                {
                    dismapDrive("X:");
                }
                catch (Exception ex)
                {
                    WriteFileStrUnicode(ex.Message, errFile);
                    Console.WriteLine(DateTime.Now + " : " + ex.Message);
                    Console.WriteLine("Press any key to exit.");
                    Console.ReadKey();
                }
        }
 
        static long getSizeAndCountFileFolders(string path)
        {
            string filename = "";
            string[] folders = null;
            string[] files = null;
            //récupere la liste des dossiers dans un tableau
            try
            {
                folders = Directory.GetDirectories(path);
                //récupere la liste des fichiers dans un tableau
                files = Directory.GetFiles(path);
            }
            catch (Exception ex)
            {
                WriteFileStrUnicode(DateTime.Now + " : " + path + " : " + ex.Message, errFile);
            }
            nbFolders += 1;
            //parcours du tableau des fichiers
            if (files != null)
            {
                foreach (string name in files)
                {
                    try
                    {
                        filename = name;
                        FileInfo info = new FileInfo(name);
                        //ajout de la taille de chaque fichier a la variable size
                        size += info.Length;
                        nbFiles += 1;
                        WriteFileStrUnicode(DateTime.Now + " : " + name + "=======>" + size, suiviFile);
                        Console.WriteLine(name + "=======>" + size);
                    }
                    catch (Exception ex)
                    {
                        error = true;
                        WriteFileStrUnicode(DateTime.Now + " : " + filename + " : " + ex.Message, errFile);
                    }
                }
            }
            if (folders != null)
            {
                //parcours du tableau des dossiers
                foreach (string folder in folders)
                {
                    //appel de la fonctions avec les chemins des sous dossiers
                    getSizeAndCountFileFolders(folder);
                }
            }
            return size;
        }
 
        //Fonction qui scan le contenu du dossier en paramètre
        public static void getInfo(string chemin)
        {   
            size = 0;
            long globalSize = 0;                        
            WriteFileStrUnicode(DateTime.Now + " : " + chemin, suiviFile);
            Console.WriteLine(DateTime.Now + " : " + chemin);
            error = false;
            globalSize = getSizeAndCountFileFolders(chemin);
            if (!error)
                WriteFileStrUnicode(chemin + ";" + size + ";" + nbFolders + ";" + nbFiles, resultFile);
            else
                WriteFileStrUnicode(@"/!\" + chemin + ";" + size + ";" + nbFolders + ";" + nbFiles, resultFile);           
        }
 
        public static void WriteFileStrUnicode(string texte, string path)
        {
            try
            {
                StreamWriter sw = new StreamWriter(path, true, Encoding.Unicode);
                sw.WriteLine(texte);
                sw.Close();
            }
            catch (Exception ex)
            {
                WriteFileStrUnicode(ex.Message, errFile);
                Console.WriteLine(ex.Message);
            }
        }
 
        public static void mapDrive(string drive, string chemin)
        {
            IWshNetwork_Class network = new IWshNetwork_Class();
            try
            {
                network.RemoveNetworkDrive(drive);
            }
            catch (Exception ex)
            {
            }
 
            network.MapNetworkDrive(drive, chemin, Type.Missing);
        }
 
        public static void dismapDrive(string drive)
        {
            IWshNetwork_Class network = new IWshNetwork_Class();
            try
            {
                network.RemoveNetworkDrive(drive);
            }
            catch (Exception ex)
            {
            }
        }
    }
Si vous voyez également des amélioration à apportée je suis prenneur ^^.

Merci d'avance;

Cdt