Как искать в каталоге тип файла с неизвестным именем - PullRequest
0 голосов
/ 15 мая 2019

Я выполняю процедуру, которая использует регистр switch для выполнения серии команд.Одним из шагов является ожидание текстового файла .csv с неизвестным именем файла, который будет создан другой программой, и выполнение некоторого анализа.

Я видел предложения по использованию FileSystemWatcher, но это зависит отиспользуя ручки, где я уже нахожусь в середине рутины.

Switch (command)
{
  case "WAIT":
   {
     while(bool found = false)
     {
       if(//NEW .csv file in a known directory exists)
          {
            found = true;
          }
       Thread.Sleep(100);
     }
     //do some stuff with the .csv file.
     break;
   }

}

Проще говоря, когда в каталоге будет найден новый файл .csv, он будет проверен и перейдет к следующему шагу процедуры.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Я не знаю точно, что вы просите.Однако, возможно, такой метод должен подойти:

public void ProcessCsvFile(){
    using (FileSystemWatcher watcher = new FileSystemWatcher())
    {
        watcher.Path = args[1];         

        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.     
        watcher.Created += (source,e)=>ProcessImportFile(e.FullPath);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        Console.WriteLine("Waiting for the file");
        Console.Read();
    }    
}

Вам необходимо создать файловую систему и обработчик для управления созданным событием, которое будет вызываться, когда кто-то помещает файл в эту папку.

1 голос
/ 15 мая 2019

Вы можете искать любой созданный файл csv в вашем каталоге, используя FileSystemWatcher. Вместо вашего while цикла используйте это:

using (var watcher = new FileSystemWatcher(directoryPath, "*.csv"))
{
     watcher.EnableRaisingEvents = true;
     var watcherCreatedFile = watcher.WaitForChanged(WatcherChangeTypes.Created); 
    //this will wait for a file to be created

    if (watcherCreatedFile.ChangeType == WatcherChangeTypes.Created)
    {
        //will trigger when a file is created
        string fileNameCreated = watcherCreatedFile.Name;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...