Exclusão de um arquivo .txt

4 respostas
evj

Boa noite!
Pessoal estou fazendo alguns exercícios de arquivo e surgiu uma dúvida quanto a atualização de um arquivo sem gravar a mesma informação duas vezes. Por exemplo, tenho um cadastro de clientes armazenado em um arquivo, quando tenho que atualizar algum dado, eu leio o arquivo e coloco as informações em um ArrayList, procuro o cliente e atualizado o dado desejado, ao salvar as informações novamente, percebi que no arquivo ficou as informações antigas mais as informações que atualizei, existe alguma forma de limpar as informações do arquivo ou então excluí-lo?

Se alguém puder dar uma dica ai, grato pela atenção.

4 Respostas

d10g3n35

Olha nesse ink aí que acho que responde a sua pergunta.

http://www.guj.com.br/posts/list/129228.java#696728

Pelo que entendi, tem haver com o parâmetro true:

O true serve para informar ao FileWriter para não sobrescrever o conteúdo do arquivo.
Se tem o true, ele só acrescenta conteúdo, se não tem, ele apaga o conteúdo que tinha no arquivo e insere um novo.

Espero que tenha ajudado!!!
Abraços!!!

ViniGodoy

Como você está fazendo sua gravação? Pode colocar o código aqui, principalmente da parte que você abre o arquivo?

evj
A parte que abre o arquivo é o código abaixo, ele , e guarda as linhas limitadas por “\n e o caracter ; entre cada dado. Depois pego este ArrayList e faço um split ; para pegar dado a dado e instanciar um objeto, salvo este objeto em um outro ArrayList e este  é a informação que vai ser alterada, depois desta alteração salvo o ArrayList novamente no arquivo, mas após debugar várias vezes, vi que foi um erro meu, porque este último Array estava sendo criado no construtor da classe. Como o exercício simula uma locadora, um cliente poderia locar mais de uma mídia,ai sempre chamava o método mais de uma vez, porém o array  estava criado, por isso estava salvando a mesma informação 2x. Foi fodarsrsrsto iniciando no java. Valeu galera, obrigado ai!

public List buscarMidias(String caminho) {

// TODO Auto-generated method stub

File f = new File(caminho);
FileReader fileReader = null;

	BufferedReader bufferReader = null;

	List<String> dadosMidias = new ArrayList<String>();

	String[] midia = null;

	Midia m = new Midia();

	try 
	{
		fileReader = new FileReader(f);

		bufferReader = new BufferedReader(fileReader);

		String linha = "";

		while ((linha = bufferReader.readLine()) != null) 
		{
			dadosMidias.add(linha);			
		}

		
		
	} catch (Exception e) 
	{
		e.printStackTrace();

	} finally 
	{
		if (bufferReader != null) 
		{
			try 
			{
				bufferReader.close();

			} catch (Exception e) {

			}
		}
	}

	return dadosMidias;
}

Agora o método que usa as informações retornadas, ai neste criei o último array e inicializei ele aqui, ai rodou…
//validar se mídia esta locada
//caso não, quando achar a midia desejada ja vai atualiza-la para locada
public Long verificaDisponibilidadeMidia(Long idMidia){

String caminho = "C:" + File.separator + "arquivos_locadora" + File.separator + "midia.txt";
	ArquivoMidia arquivomidia = new ArquivoMidia();
	String[] midia = null;
	Long idM = null;
	String descricao = "";
	String situacao = "";
	Boolean locada = null;
	Boolean locadaTeste = null;
	Long idTeste = null;
                            //TIVE QUE INICIALIZAR O ARRAY QUE SERIA ATUALIZADO AQUI, AI RODOU
	List<Midia> listaMidiaAtualizada = null;
	listaMidiaAtualizada = new ArrayList<Midia>();
	List<String> dadosMidias = arquivomidia.buscarMidias(caminho);
		for(int i=0; i<dadosMidias.size(); i++){//criando uma lista para atualizar as midias locadas

			midia = dadosMidias.get(i).split(";");
			Long id = Long.parseLong(midia[0]);
			descricao = midia[1];
			locada = Boolean.parseBoolean(midia[2]);
			Midia m = new Midia();
			m.setId(id);
			m.setDescricao(descricao);
			m.setLocada(locada);
			listaMidiaAtualizada.add(m);
			
		}	
		
		for (Midia mid : listaMidiaAtualizada)//acha a midia na lista e altera sua situacao para locada 
		{
			Long idMidiaTeste = mid.getId();
			Boolean locadaAux = mid.getLocada();
			if(idMidiaTeste == idMidia && locadaAux == false){
				mid.setLocada(true);
				locadaTeste = mid.getLocada();
				idTeste = mid.getId();
			}
		}		
		
		
		MidiaArquivoRegrava(listaMidiaAtualizada);//grava a lista de midias atualizada em arquivo
			
	
	if(locadaTeste == true)
		return idTeste;
	else
		return null;
}
ViniGodoy

Oi,

Você pode editar o tópico ali em cima e seguir essas dicas?
http://www.guj.com.br/posts/list/50115.java

Senão fica difícil ler seu programa…

Criado 9 de agosto de 2009
Ultima resposta 11 de ago. de 2009
Respostas 4
Participantes 3