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!