public void TraverseTree(string root, String filename)
{
Stack<string> dirs = new Stack<string>(20);
if (!System.IO.Directory.Exists(root))
{
throw new ArgumentException();
}
dirs.Push(root);
while (dirs.Count > 0)
{
string currentDir = dirs.Pop();
string[] subDirs;
try
{
subDirs = System.IO.Directory.GetDirectories(currentDir);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine(e.Message);
continue;
}
catch (System.IO.DirectoryNotFoundException e)
{
Console.WriteLine(e.Message);
continue;
}
string[] files = null;
try
{
files = System.IO.Directory.GetFiles(currentDir);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine(e.Message);
continue;
}
catch (System.IO.DirectoryNotFoundException e)
{
Console.WriteLine(e.Message);
continue;
}
foreach (string file in files)
{
try
{
System.IO.FileInfo fi = new System.IO.FileInfo(file);
if (fi.Extension == ".raw")
{
//Console.WriteLine("Computing: {0}", file);
computeFile(fi.FullName, filename);
}
}
catch (System.IO.FileNotFoundException e)
{
Console.WriteLine(e.Message);
continue;
}
}
foreach (string str in subDirs)
dirs.Push(str);
}
}