Entwickler-Ecke

WinForms - Treeview: Dateien und Ordnernamen auslesen


Crynon - Do 03.12.09 11:24
Titel: Treeview: Dateien und Ordnernamen auslesen
Hallo Community,

ich habe folgendes Problem.

Ich kriege das einfach nicht mit Path.GetDirectoryName hin das er mir nur den Ordnername in die TreeView packt =( ....

Ich hoffe ihr wisst eine Lösung


C#-Quelltext
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:
private void Form1_Load(object sender, EventArgs e)
        {
            // aktuelles Verzeichnis auslesen und deklarieren
            string basePath = Directory.GetCurrentDirectory();

            //Methode zum TreeView füllen aufrufen
             allDirectorys(null, basePath);
        }

        private void allDirectorys(TreeNode fromNode, string basePath)
        {
            
            TreeNode newDirectory = new TreeNode();
            TreeNode newFile = new TreeNode();
            string  justTheSubDirectory;    
            string Filename;

            foreach (string oneDirectory in Directory.GetDirectories(basePath))
            {
                //Ordnernamen auslesen
                justTheSubDirectory = oneDirectory ;

                //Überprüfen ob der Ordnername ein $-Zeichen enthält
                if (!justTheSubDirectory.Contains("$"))
                {
                    if (fromNode == null)
                    {
                        newDirectory = treeProject.Nodes.Add(justTheSubDirectory);
                        foreach (string oneFile in Directory.GetFiles(justTheSubDirectory))
                        {
                            Filename = Path.GetFileName(oneFile);

                            if (!Filename.Contains("$"))
                            {
                                newFile = newDirectory.Nodes.Add(Filename, Filename);
                            }
                        }
                    }

                    else
                    {
                        newDirectory = fromNode.Nodes.Add(justTheSubDirectory);
                        foreach (string oneFile in Directory.GetFiles(oneDirectory))
                        {
                            Filename = Path.GetFileName(oneFile);
                            newFile = newDirectory.Nodes.Add(Filename, Filename);
                        }
                    }
                    allDirectorys(newDirectory, justTheSubDirectory);
                }
               
                
                
            }


Moderiert von user profile iconKha: Code- durch C#-Tags ersetzt


bakachan - Do 03.12.09 11:35

Um nur den Namen zu kriegen gibt es doch viele Möglichkeiten, hier mal 2 Beispiele:

C#-Quelltext
1:
path.Substring(path.LastIndexOf('\\'))                    


C#-Quelltext
1:
new System.IO.DirectoryInfo(path).Name                    


Crynon - Do 03.12.09 11:45

Vielen dank,

das mit

C#-Quelltext
1:
path.Substring(path.LastIndexOf('\\'))                    

hat fast geklappt aber jetzt macht er mir immer noch ein \ davor ?!?

Habe gerade erst mit C# angefangen =(


bakachan - Do 03.12.09 11:59


C#-Quelltext
1:
string.Substring(startIndex)                    

also wenn er noch ein zeichen zu früh anfängt machst du halt noch ein +1 dazu


Crynon - Do 03.12.09 12:08

Okay, danke nur ich muss das ganze bei der Namensvergebung des Tree-Namens machen, weil ich ansonsten kein Fullpath mehr habe um hinterher,wenn es eine Datei ist das dazu gehörige Programm zu starten ...

War ja voll easy >.<

THEMA ERLEDIGT

EDIT:

Hier noch der bearbeitete Code


C#-Quelltext
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:
 private void Form1_Load(object sender, EventArgs e)
        {
            // aktuelles Verzeichnis auslesen und deklarieren
            string basePath = Directory.GetCurrentDirectory();

            //Methode zum TreeView füllen aufrufen
             allDirectorys(null, basePath);
        }

        private void allDirectorys(TreeNode fromNode, string basePath)
        {
            
            TreeNode newDirectory = new TreeNode();
            TreeNode newFile = new TreeNode();
            string  justTheSubDirectory;    
            string Filename;

            foreach (string oneDirectory in Directory.GetDirectories(basePath))
            {
                //Ordnernamen auslesen
                justTheSubDirectory = oneDirectory ;

                //Überprüfen ob der Ordnername ein $-Zeichen enthält
                if (!justTheSubDirectory.Contains("$"))
                {
                    if (fromNode == null)
                    {

                        newDirectory = treeProject.Nodes.Add(justTheSubDirectory, justTheSubDirectory.Substring(justTheSubDirectory.LastIndexOf('\\') + 1));
                        foreach (string oneFile in Directory.GetFiles(justTheSubDirectory))
                        {
                            Filename = Path.GetFileName(oneFile);

                            if (!Filename.Contains("$"))
                            {
                                newFile = newDirectory.Nodes.Add(Filename, Filename);
                            }
                        }
                    }

                    else
                    {


                        newDirectory = fromNode.Nodes.Add(justTheSubDirectory, justTheSubDirectory.Substring(justTheSubDirectory.LastIndexOf('\\') + 1));
                        foreach (string oneFile in Directory.GetFiles(oneDirectory))
                        {
                            Filename = Path.GetFileName(oneFile);
                            newFile = newDirectory.Nodes.Add(Filename, Filename);
                        }
                    }
                    allDirectorys(newDirectory, justTheSubDirectory);
                }
               
                
                
            }
            
            
        }