Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno_Ferreira

[Resolvido] Erro na escrita de Arquivo

Recommended Posts

Galera, estou com a seguite função em C#:

 

public void escreverArquivo(FileInfo[] arq)
		{
			try
			{
				FileInfo fi = new FileInfo("Z:\\telecobranca\\Lista_arquivos.txt");
				FileStream escr = fi.Create();
				StreamWriter sw = fi.CreateText();

				sw.WriteLine("Nome \t Data Criação \t Caminho \t Ultima Escrita \t Tamanho \t Registros");

				foreach(FileInfo file in arq)
				{
					sw.WriteLine(file.Name + "\t" + file.CreationTime + "\t" + file.FullName + "\t" + file.LastWriteTime + "\t" + file.Length + "\t" + leArquivo(file) + "\r\n");
				}

				sw.Close();

			}
			catch (Exception e)
			{
				MessageBox.Show("Erro ao escrever no arquivo:\r\n" + e.ToString());
			}
		}

Acontece que está relatando uma exceção de que o arquivo já está sendo usado em outro processo, mas não exeiste nenhum outro processo além do próprio aplicativo usando ele. Alguém sabe por que isso pode estar relatando erro?

 

valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei que simplesmente fechar ele já seria o suficiente.

 

Coloquei esse comando logo após a escrita no arquivo e continua na mesma

 

public void escreverArquivo(FileInfo[] arq)
		{
			try
			{
				FileInfo fi = new FileInfo("D:\\Bruno\\Lista_arquivos.txt");
				FileStream escr = fi.Create();
				StreamWriter sw = fi.CreateText();

				sw.WriteLine("Nome \t Data Criação \t Caminho \t Ultima Escrita \t Tamanho \t Registros");

				foreach (FileInfo file in arq)
				{
					sw.WriteLine(file.Name + "\t" + file.CreationTime + "\t" + file.FullName + "\t" + file.LastWriteTime + "\t" + file.Length + "\t" + leArquivo(file) + "\r\n");
				}

				sw.Dispose();
				sw.Close();

			}
			catch (Exception e)
			{
				MessageBox.Show("Erro ao escrever no arquivo:\r\n" + e.ToString());
			}
		}

Cria o arquivo mas não escreve nada nele, fica zerado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera, consegui

 

ao invés de instanciar um FileInfo e a partir dele um StreamWriter, simplesmente instanciei um StreamWriter diretamente a partir do caminho assim:

 

public void escreverArquivo(FileInfo[] arq)
		{
			try
			{
				StreamWriter sw = new StreamWriter("Z:\\Telecobranca\\Lista_arquivos.txt", true, Encoding.ASCII); 

				sw.WriteLine("Nome \t Data Criacao \t Caminho \t Ultima Escrita \t Tamanho \t Registros");

				foreach (FileInfo file in arq)
				{
					sw.WriteLine(file.Name + "\t" + file.CreationTime + "\t" + file.FullName + "\t" + file.LastWriteTime + "\t" + file.Length + "\t" + leArquivo(file) + "\r\n");
				}
				sw.Close();

			}
			catch (Exception e)
			{
				MessageBox.Show("Erro ao escrever no arquivo:\r\n" + e.ToString());
			}
		}

não sei porque mas assim funcionou, Obrigado pelo apoio aí, e fica o resultado aí pra quem tiver dúvidas com isso ainda.

 

valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão, faça assim:

using(StreamWriter sw = new StreamWriter("Z:\\Telecobranca\\Lista_arquivos.txt", true, Encoding.ASCII))
{
	sw.WriteLine("Nome \t Data Criacao \t Caminho \t Ultima Escrita \t Tamanho \t Registros");
	foreach (FileInfo file in arq)
	{
		sw.WriteLine(file.Name + "\t" + file.CreationTime + "\t" + file.FullName + "\t" + file.LastWriteTime + "\t" + file.Length + "\t" + leArquivo(file) + "\r\n");
	}
}
O using vai se encarregar de fechar todos os recursos do StreamWriter, mesmo se o correr um erro, além de ficar mais apresentável. Mas é só uma sugestão :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.