Arquivo texto Java

6 respostas
programaçãojava
Dahan_Schuster

Olá, bom dia.

Estou com problemas em um método que cadastra fornecedores de uma empresa em um arquivo texto.
Cadastrar é moleza; o problema surge quando cadastro um fornecedor já existente. O método deveria verificar a existência do fornecedor (através do cnpj) e apenas atualizar os dado, porém ele apaga todos os dados anteriormente cadastrados e deixa apenas o fornecedor atualizado. Não sei o que fiz de errado, alguém pode me ajudar?
Eis o código:

` public void cadastrar() throws IOException {

// Criando o novo objeto Arquivo
	Arquivo arquivo = new Arquivo("fornecedores");

	// Limpando todos os dados do ArrayList
	fornecedores.clear();

	// Adicionando os dados do arquivo
	fornecedores = arquivo.lerArquivoLeitura();

	// Formatando as informações
	String dados = String.format("%s;%s;%s;%s", this.cnpj, this.nome, this.telefone, this.email);

	boolean encontrado = false;
	// Verificando se o fornecedor já está cadastrado
	for (int i = 0; i < fornecedores.size(); i++) {
		if (fornecedores.get(i).contains(this.cnpj)) {
			// Caso esteja, atualiza seus dados
			fornecedores.set(i, dados + "%n");
			encontrado = true;
			break;
		}
	}
	
	if (!encontrado) {
		// Se não estiver, atualiza o ArrayList com o novo dado
		fornecedores.add(dados + "%n");
	}

	// Pondo os novos dados no arquivo
	for (String fornecedor : fornecedores) {
		arquivo.gravarDados(fornecedor);
	}

	// Fechando o arquivo
	arquivo.fecharArquivoGravacao();

}`

P.S.: A classe Arquivo contém os objetos de gravação e leitura de arquivo texto e possui métodos já prontos pra gravar e ler arquivos.

6 Respostas

Rodrigo_Void

Precisa postar todo código relacionado, principalmente o método gravarDados que supostamente é onde está o problema.

Dahan_Schuster

O método gravarDados funciona corretamente. Uso a classe arquivo em vários sistemas. O código relacionado seria qual? Tenho certeza que o erro está só no método cadastrar.

Rodrigo_Void

Se vc diz q funciona corretamente então vc n precisa de ajuda.

Dahan_Schuster

Preciso sim, cara. O método cadastrar é que tem erro, e eu não sei qual. Entenda, meu problema não é com a gravação de dados, e sim com a forma como eu faço para atualizar os dados se já existir um fornecedor e apenas cadastrar um novo se não existir.

Dahan_Schuster

Quando eu deixo apenas a função de cadastrar novo, sem me preocupar se já existe um fornecedor com aquele cnpj, ele faz normalmente, o problema surge quando tento implementar a função de atualizar dados.

Rodrigo_Void

Só quero descartar a possibilidade de ser o gravar, depois parto para ver outras questões.
Se não quer colaborar com a ajuda, boa sorte.

Criado 8 de outubro de 2018
Ultima resposta 9 de out. de 2018
Respostas 6
Participantes 2