C# Language IsFileReady


Exemple

Une erreur commune commise par beaucoup de gens avec FileSystemWatcher ne tient pas compte du fait que l'événement FileWatcher est déclenché dès que le fichier est créé. Cependant, le traitement du fichier peut prendre un certain temps.

Exemple :

Prenez une taille de fichier de 1 Go par exemple. Le fichier apr demandé est créé par un autre programme (Explorer.exe en le copiant à partir de quelque part) mais cela prendra quelques minutes pour terminer ce processus. L'événement est déclenché au moment de la création et vous devez attendre que le fichier soit prêt à être copié.

Ceci est une méthode pour vérifier si le fichier est prêt.

 public static bool IsFileReady(String sFilename)
{
    // If the file can be opened for exclusive access it means that the file
    // is no longer locked by another process.
    try
    {
        using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
        {
            if (inputStream.Length > 0)
            {
                return true;
            }
            else
            {
                return false;
            }

        }
    }
    catch (Exception)
    {
        return false;
    }
}