6236 Programmering I Agenda/Recursion

From Teknologisk videncenter
Jump to: navigation, search

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.