Frage von jundo324, 71

Wie kann ich in C# (Rekursiv) alle Dateien / Ordner auflisten?

Hi, ich möchte in C# (Windows Universal App) per Button alle Dateien auf dem PC durchsuchen lassen (mit Unterordner), und diese dann in einer ListBox anzeigen lassen. (also er soll von zb C:/ alle Dateien und Ordner abwärts auflisten)

Ich habe jetzt diesen Code hier :

   private void button1_Click(object sender, EventArgs e)
        {
            
        try
            {
             
                listBox1.Items.Add(Directory.GetFiles(@"C:\", " * ", SearchOption.AllDirectories));
            }

           
            catch (Exception ex)
            {
                listBox1.Items.Add(ex.Message);
                
            }


allerdings schon beim ersten Ordner (%recyclebin% oder so) hört er auf zusuchen da er keine Berechtigung hat. Er sollte also wenn er keine Rechte hat einfach mit dem nächsten Ordner/Datei weitermachen. Wie realisiere ich das? Am besten wären Code Beispiele auch zu meinem jetzigen Code.

Antwort
von xGlumi, 30

1. Ich kann dir nur hilfe in VB.Net geben

Ist aber eh das selbe...

Hier mal ein Code den ich gerade in VB.Net geschrieben habe (Hab es für dich kurz durch nen Onlineübersetzer laufen lassen)


VB.NET


Dim output As String = ""
Private Sub listAll(startPfad As String)

For Each ordner In IO.Directory.GetDirectories(startPfad)
output &= "Ordner -> " & ordner & vbNewLine
For Each file In IO.Directory.GetFiles(ordner)
output &= "Datei -> " & file & vbNewLine
Next
For Each ordner2 In IO.Directory.GetDirectories(ordner)
listAll(ordner2)
Next
Next
End Sub

C#

string output = "";
private void listAll(string startPfad)
{

foreach (void ordner_loopVariable in IO.Directory.GetDirectories(startPfad)) {
ordner = ordner_loopVariable;
output += "Ordner -> " + ordner + Constants.vbNewLine;
foreach (void file_loopVariable in IO.Directory.GetFiles(ordner)) {
file = file_loopVariable;
output += "Datei -> " + file + Constants.vbNewLine;
}
foreach (void ordner2_loopVariable in IO.Directory.GetDirectories(ordner)) {
ordner2 = ordner2_loopVariable;
listAll(ordner2);
}
}
}

Einfach dann mit:

listAll("START VERZEICHNIS");
aufrufen

MFG xGlumi

Keine passende Antwort gefunden?

Fragen Sie die Community