Trabalhar com arquivos no c# as vezes pode ser bem trabalhoso. Com isto resolvi postar uma solução bem simples para quem deseja verificar se um arquivo está disponível para escrita/leitura no tempo de execução.
Veja:
protected virtual bool IsFileLocked(FileInfo file) { FileStream stream = null; try { stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None); } catch (IOException) { //o arquivo está indiposnível pelas seguintes causas: //está sendo escrito //utilizado por uma outra thread //não existe ou sendo criado return true; } finally { if (stream != null) stream.Close(); } //arquivo está disponível return false; }
Simples não?
Um grande abraço a todos!