<p><strong>REMARQUE mise à jour sur cette solution</strong> : La vérification avec <code>FileAccess.ReadWrite</code> échouera pour les fichiers en lecture seule, la solution a donc été modifiée pour vérifier avec <code>FileAccess.Read</code>.</p>
<p><strong>ORIGINAL :</strong><br>
J’ai utilisé ce code ces dernières années, et je n’ai eu aucun problème avec.</p>
<p>Comprenez votre hésitation à utiliser les exceptions, mais vous ne pouvez pas les éviter tout le temps :</p>
<pre><code class="lang-auto">protected virtual bool IsFileLocked(FileInfo file)
{
try
{
using(FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None))
{
stream.Close();
}
}
catch (IOException)
{
//the file is unavailable because it is:
//still being written to
//or being processed by another thread
//or does not exist (has already been processed)
return true;
}
//file is not locked
return false;
}
</code></pre>