Salut,
J'avais le même genre de problématique à résoudre dans mon projet.
C'est un service Windows qui doit regarder à intervalle régulier une liste de répertoire d'intérêts, voir les fichiers qu'il y a dans chaque répertoire et ne récupérer que les fichiers 'prêts pour traitement'.
Le service considère un fichier 'prêt pour traitement',
c'est à dire qu'il n'est pas en cours de copie ou d'écriture,
lorsque
l'intervalle de temps entre la date courante et la date de dernier accès en écriture au fichier est supérieure à 5 min par exemple.
5, 10, 30, 60 min, c'est toi après qui peut le définir..
On peut récupérer la date de dernier accès en écriture d'un fichier grâce à l'objet '
FileInfo' de '
System.IO'.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Ton répertoire à scruter
string directory = @"C:\Users\Johann\Desktop\toto";
// L'intervalle (en minutes) entre la date courante et la date de dernier accès en écriture au fichier
// que tu juges suffisant pour considérer qu'un fichier est "prêt" pour ton traitement.
int intervalleRequis = 5;
// Création d'un objet 'DirectoryInfo' sur ton répertoire
DirectoryInfo di = new DirectoryInfo(directory);
// Récupération de la liste des fichiers contenus dans ton répertoire
// dans un tableau d'objets 'FileInfo'
FileInfo [] fileList = di.GetFiles();
// S'il y a au moins un fichier dans la liste récupérée..
if (fileList.Length > 0)
{
// Pour chaque objet 'FileInfo' dans ton tableau "fileList"..
foreach (FileInfo f in fileList)
{
DateTime now = DateTime.Now;
DateTime lastWrite = f.LastWriteTime;
TimeSpan diff = now - lastWrite;
int interval = (int)diff.TotalMinutes;
if (interval >= intervalleRequis)
{
// OK, le fichier peut être traité
}
else
{
// KO : l'intervalle entre la date courante et la date de dernier accès en écriture
// n'est pas suffisant (inférieur à 5 min) : le fichier ne peut pas être traité
}
}
}
}
}
} |
J'espère que ça pourra t'aider.
Partager