O arquivo está sendo usado por outro processo!

De um tempo para cá, ao ler um arquivo de texto (.txt) minha aplicação parou de funcionar apresentando a mensagem do tópico.

o mais estranho é que estou utilizando o using e mesmo assim ocorre o erro ao tentar deletar o arquivo.

Alguém já teve esse mesmo problema?

fileName = this.FileUpload1.PostedFile.FileName;
vCamArq = CaminhoArquivo + fileName;

StringBuilder sb = new StringBuilder();

using (var fileStream = new FileStream(vCamArq, FileMode.Open, FileAccess.Read))
{
	using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
	{
		sb.Append(streamReader.ReadToEnd());              
	}
}

if (File.Exists(vCamArq))
	File.Delete(vCamArq);
1 curtida

Vi esta mensagem em dois casos, quando coincidiu do antivírus estar verificando o disco e bloqueou o acesso ao arquivo e quando da rotina de indexação dos arquivos pelo windows.

Se o objetivo é extrair todo texto de um arquivo e em seguida exclui-lo, não entendi pq essa complexidade. Um exemplo mais simples:

string textoArquivo = File.ReadAllText(caminhoArquivo);

File.Delete(caminhoArquivo);

Fora isso, causas externas como o colega acima falou.

1 curtida

Você está fazendo uma aplicação Web e utilizando um input type file para enviar um arquivo texto, correto? Então quando você faz isso precisa salvar em um diretório na sua aplicação (por exemplo: crie um diretório temp com todas as permissões) e com isso você usa o arquivo e depois pode excluir.

Um coisa o using é para liberar recursos, mas, não quer dizer que ele libere logo após, isso é um aviso que esse recurso pode ser liberado.

Eu não vejo o inicio do código então pre julgo que está faltando fazer isso.