Oui, il retournera les fichiers qui sont encore en utilisation. Ils sont toujours dans le répertoire, même si vous ne pouvez pas les ouvrir actuellement.
Code d'essai pour le prouver:
using System;
using System.IO;
using System.Linq;
class Test
{
static void Main()
{
File.Delete("test.tmp");
// Prints false - the delete worked
Console.WriteLine(Directory.GetFiles(".")
.Any(x => x.EndsWith("\\test.tmp")));
using (Stream stream = File.Create("test.tmp"))
{
// Prints true, even though the stream is still open
Console.WriteLine(Directory.GetFiles(".")
.Any(x => x.EndsWith("\\test.tmp")));
}
}
}
Comme on dit, même si vous pouvez cela, il n'y a aucune garantie que vous seriez encore en mesure d'ouvrir le fichier une seconde plus tard. Les vérifications du système de fichiers ne seront jamais que des instantanés, à moins que vous ne fassiez quelque chose pour assurer vous-même la cohérence, comme ouvrir le fichier et le maintenir ouvert.
Une fois que vous aurez récupéré votre liste, le statut de ces fichiers pourrait facilement changer. Votre design, il y a quelque chose qui ne va pas. – Will
Dans ce cas, le fichier ne changera pas. C'est un fichier EDI en cours d'écriture. Ils ne seront jamais modifiés, seulement créés puis laissés seuls. – Kevin