6236 Programmering I Agenda/Recursion
From Teknologisk videncenter
Følgende program kan anvendes til at liste alle filer i et bestemt directory
class Program
{
static void ListFiles(string dir)
{
//Opret et array til filnavnene
String[] files;
//Spørg hvilke filer der er i directoriet
files = System.IO.Directory.GetFiles(dir);
//Udskriv alle filerne
foreach (string file in files)
{
System.Console.WriteLine(file);
}
}
static void Main(string[] args)
{
//Kald metoden
ListFiles("C:\\");
System.Console.ReadKey();
}
}
Ved at ændre i metoden ListFiles kan vi få den til også at liste subdirectories, men rekursivt bliver det når vi lader metoden ListFiles kalde sig selv for hvert subdir.
static void ListFiles(string dir)
{
//Opret et array til filnavnene
String[] files;
//Spørg hvilke filer der er i directoriet
files = System.IO.Directory.GetFiles(dir);
//Udskriv alle filerne
foreach (string file in files)
{
System.Console.WriteLine(file);
}
//Lav et array til directory names
String[] subdirs;
subdirs = System.IO.Directory.GetDirectories(dir);
//Loop gennem alle directories
foreach (string subdir in subdirs)
{
//Metoden kalder sig selv med det nye sub
ListFiles(subdir);
}
}
Opgave
Lav et program der kan finde en fil med et bestemt navn på din harddisk og udskrive filen.
Hvis du starter fra root vil du opleve problemer med rettigheder til nogle biblioteker, men det kan løses med try catch.