Verificando o status de um arquivo na rede em C#

Olá todos! O amigo Wilson Dutra precisava programar uma verificação de arquivos em dois servidores (um principal e outro de backup) e saber se esses arquivos estavam em uso. Fiquei surpreso ao saber de uma ferramenta disponível no próprio Windows localizado na pasta System32 chamado OpenFiles.

openfiles

Criando um arquivo bat:

@ECHO OFF
C:
del Entrada.Dat
openfiles.exe /query /v > c:Entrada.Dat
exit

Leitura do arquivo de entrada, guardando o resultado em um ArrayList e transportando o resultado para uma ListBox. Salvando também o resultado do ListBox em um novo arquivo de texto chamado Leitura.Dat

private void button1_Click(object sender, EventArgs e)
{
   Process p1 = Process.Start(@"c:Execute.bat");
   p1.WaitForExit();
   StreamReader Dat1 = new StreamReader(@"C:Entrada.dat", false);
   StreamWriter DatL = new StreamWriter(@"C:Leitura.dat", false);
 
   string lin = string.Empty;
   ArrayList arrTexto = new ArrayList();
   int j = 0;
   while (lin != null)
   {
       //Realizo a leitura do arquivo linha a linha
       lin = Dat1.ReadLine();
       //Se a linha for de index 8 inicio a leitura
       if (j >= 8)
           //Se a linha for nula ou vazia ignoro
           if (lin != null && lin != "")
               //Pego apenas os arquivos marcados como Leitura
               // e Gravação editáveis)
               if (lin.IndexOf("Leitura + grava") > -1)
                   //Adiciono a linha aceita ao ArrayList
                   arrTexto.Add(lin.Substring(84));
       j++;
   }
   //Fecho meu arquivo de entrada
   Dat1.Close();
   listBox1.Items.Clear();
   //Guardo o Array no ListView
   foreach (string leitura in arrTexto)
   {
       listBox1.Items.Add(leitura);
       DatL.WriteLine(leitura);
   }
}

Este exemplo mostra como ler o retorno do arquivo Execute.bat, trazendo assim o resultado do openfiles.exe. No próximo artigo complementaremos a solução mostrando como fazer a leitura no segundo servidor e o bloqueio do mesmo. Muito obrigado Wilson por compartilhar o seu conhecimento com todos do blog. Parabéns!