сделал такую простую, но нужную мне, штуку:
using System;
using System.IO;
using System.Collections.Generic;
namespace Program
{
class MainClass
{
public delegate void PathDelegate(FileInfo di);
///
/// Вызывает pd для каждого файла во всех поддиректориях в rd
///
/// /// root directory
///
static void dirMap(DirectoryInfo rd,MainClass.PathDelegate pd)
{
FileInfo[] files= null;
DirectoryInfo[] subdirs=null;
try
{
files=rd.GetFiles("*");
}
catch(Exception ex)
{
Console.WriteLine("error on "+rd.FullName+": "+ex.ToString());
}
if (files!=null) {
foreach (FileInfo file in files) {
pd(file);
}
}
subdirs=rd.GetDirectories("*");
foreach (DirectoryInfo d in subdirs) {
dirMap(d,pd);
}
}
public static void Main (string[] args)
{
if(args.Length<1){
Console.WriteLine("usage: yatsrobot path");
}
Console.WriteLine("scaning "+args[0]);
if(Directory.Exists(args[0])){
Console.WriteLine("directory extists");
var di=new DirectoryInfo(args[0]);
dirMap(di,x=> Console.WriteLine(x.FullName));
}
else{
Console.WriteLine("directory not extists");
return;
}
}
}
}