C # сканирует папку и открывает файлы, которые были созданы после определенного времени - PullRequest
6 голосов
/ 21 июня 2011

Я пишу небольшую программу на C #, которая сканирует папку и открывает файлы, созданные после 17:30 после нажатия кнопки в программе.Это также придется искать в подпапках.

Мне нужно несколько решений, чтобы указать мне правильное направление, так как я не уверен, как бы я это сделал.часть программы просмотра папок.Проблема в том, что когда пользователь уходит домой, компьютер выключается, и после 17.30 в каталоге создаются файлы.Поэтому мне нужен способ, чтобы при перезапуске программы утром она обнаруживала все, что было создано после 17:30, и открывала их.Я хотел бы использовать кнопку, чтобы открыть или показать файлы, созданные после 17.30.

Ответы [ 4 ]

19 голосов
/ 21 июня 2011

Посмотрите на пространство имен System.IO , в нем есть все, что вам нужно.

классы DirectoryInfo и File будут делать то, что вы хотите.

5 голосов
/ 23 июня 2011

Вот рекурсивный метод, который вы ищете:

public static List<string> GetFilesCreatedAfter(string directoryName, DateTime dt)
{
    var directory = new DirectoryInfo(directoryName);
    if (!directory.Exists)
        throw new InvalidOperationException("Directory does not exist : " + directoryName);
    var files = new List<string>();
    files.AddRange(directory.GetFiles().Where(n => n.CreationTime > dt).Select(n=>n.FullName));
    foreach (var subDirectory in Directory.GetDirectories(directoryName))
    {
        files.AddRange(GetFilesCreatedAfter(subDirectory,dt));
    }
    return files;
}

Надеюсь, я помог.

3 голосов
/ 21 июня 2011

Вы можете использовать FileSystemWatcher ( документация MSDN ), чтобы обнаружить файлы, созданные после нажатия кнопки (во время работы приложения).

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\YourDirectory";
watcher.Created += (sender, args) => {
    // File was created
}
watcher.EnableRaisingEvents = true;

Это позволяет вам отслеживать файлы по мере их создания (пока ваше приложение работает).

Если вы просто хотите получить список всех каталогов, которые были созданы за указанный промежуток времени (до запуска вашего приложения), то вы можете искать в дереве каталогов, используя Directory.GetDirectories и Directory.GetFiles.

1 голос
/ 21 июня 2011

Вместо даты и времени укажите значение даты и времени.

void DirSearch(string dir) 
{
    try 
    {
        foreach (string d in Directory.GetDirectories(dir)) 
        {
            foreach (string f in Directory.GetFiles(d, "*.*")) 
            {
                if(DateTime.Compare(f.GetCreationTime, datetime))
                {
                    //files found            
                }
            }
            DirSearch(d);
        }
    }
    catch (System.Exception excpt) 
    {
        Console.WriteLine(excpt.Message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...