[RESOLVIDO] Problemas com Lógica e tratamento do Split

2 respostas
danilovazb

Bom Dia a todos \o

Galera, vejam se conseguem me ajudar, estou quebrando a cabeça aqui a um tempinho e não consigo achar soluçao.

Para entenderem o problema.

Eu recebo um arquivo .TXT de uma empresa com telefones, só que o layout do arquivo não é compativel com a importação para meu ERP, fiz um programa que faz a "conversão" de layout para poder importar para meu ERP.

O formato do arquivo.

CPF;DDD1;Telefone1;DDD2;Telefone2;DDD3;Telefone3;DDD4;Telefone4;DDD5;Telefone5;DDD6;Telefone6;DDD7;Telefone7;DDD8;Telefone8;DDD9;Telefone9;DDD10;Telefone10

Só que assim, tem CPF que vem 3 números de telefone e CPF que vem 10.

Depende do CPF, eu fiz um código que alinha os telefones dessa maneira para importação.

CPF;DDD1Telefone1
CPF;DDD2Telefone2
CPF;DDD3Telefone3
CPF;DDD4Telefone4
CPF;DDD5Telefone5
CPF;DDD6Telefone6
CPF;DDD7Telefone7
CPF;DDD8Telefone8
CPF;DDD9Telefone9
CPF;DDD10Telefone10

Só que eu estou duplicando os valores com meu código, observem.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.channels.FileChannel;
import java.sql.SQLException;
import java.util.regex.Pattern;

public class tratPipe {

	public void tratamentoArquivo(String caminho, String arqTrat)
			throws IOException, ClassNotFoundException, SQLException {

		FileReader ler = new FileReader(caminho);
		BufferedReader leitor = new BufferedReader(ler);
		String linha;
		@SuppressWarnings("unused")
		String linhaReescrita;

		PrintWriter out = new PrintWriter(arqTrat);

		while ((linha = leitor.readLine()) != null) {

			try {
				String[] linhas = linha.split(Pattern.quote(";"));
				// linhaReescrita = linha.replaceAll(";00", ";");
				
				out.println(linhas[0] + ";" + linhas[1] + linhas[2]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14] + "\n"
						+ linhas[0] + ";" + linhas[15] + linhas[16]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14] + "\n"
						+ linhas[0] + ";" + linhas[15] + linhas[16] + "\n"
						+ linhas[0] + ";" + linhas[17] + linhas[18]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14] + "\n"
						+ linhas[0] + ";" + linhas[15] + linhas[16] + "\n"
						+ linhas[0] + ";" + linhas[17] + linhas[18] + "\n"
						+ linhas[0] + ";" + linhas[19] + linhas[20]);

			} catch (ArrayIndexOutOfBoundsException b) {
				System.out.println("Erro: " + b);
			}

		}

		out.close();
		leitor.close();

	}

	public static void copiarArquivos(String source, String destination)
			throws IOException {

		

		FileChannel sourceChannel = null;
		FileChannel destinationChannel = null;

		try {
			sourceChannel = new FileInputStream(source).getChannel();
			destinationChannel = new FileOutputStream(destination).getChannel();
			sourceChannel.transferTo(0, sourceChannel.size(),
					destinationChannel);
		} finally {
			if (sourceChannel != null && sourceChannel.isOpen())
				sourceChannel.close();
			if (destinationChannel != null && destinationChannel.isOpen())
				destinationChannel.close();
		}
	}

	public void removDuplicado(String nvArquivo, String arqTrat)
			throws IOException, ClassNotFoundException, SQLException {

		FileReader ler = new FileReader(arqTrat);
		BufferedReader leitor = new BufferedReader(ler);
		String linha;
		String retira00;
		String retira0;

		PrintWriter out = new PrintWriter(nvArquivo);

		while ((linha = leitor.readLine()) != null) {

			retira00 = linha.replaceAll(";00", ";");
			retira0 = retira00.replaceAll(";0", ";");
			out.println(retira0);

		}

		out.close();
		leitor.close();
		File arq = new File(arqTrat);
		arq.delete();

	}

}

No código, no trecho abaixo eu duplico o numero varias vezes, pois se coloco apenas do telefone1 ao telefone10 ele me traz somente CPFs do arquivo que contenha 10 telefones e não todos.

out.println(linhas[0] + ";" + linhas[1] + linhas[2]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14] + "\n"
						+ linhas[0] + ";" + linhas[15] + linhas[16]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14] + "\n"
						+ linhas[0] + ";" + linhas[15] + linhas[16] + "\n"
						+ linhas[0] + ";" + linhas[17] + linhas[18]);
				out.println(linhas[0] + ";" + linhas[1] + linhas[2] + "\n"
						+ linhas[0] + ";" + linhas[3] + linhas[4] + "\n"
						+ linhas[0] + ";" + linhas[5] + linhas[6] + "\n"
						+ linhas[0] + ";" + linhas[7] + linhas[8] + "\n"
						+ linhas[0] + ";" + linhas[9] + linhas[10] + "\n"
						+ linhas[0] + ";" + linhas[11] + linhas[12] + "\n"
						+ linhas[0] + ";" + linhas[13] + linhas[14] + "\n"
						+ linhas[0] + ";" + linhas[15] + linhas[16] + "\n"
						+ linhas[0] + ";" + linhas[17] + linhas[18] + "\n"
						+ linhas[0] + ";" + linhas[19] + linhas[20]);

Teria alguma maneira de trazer todos os numeros dos arquivos só que sem duplicar?

Ou então, criar um método que possa eliminar os telefones duplicados de cada CPF?

2 Respostas

drsmachado

Crie uma classe CpfTelefone e, nela coloque um atributo que represente o CPF (seja String ou BigDecimal) e uma coleção que represente cada telefone. Creio que saiba que um Set é um tipo de coleção que não permite elementos duplicados, certo?
Aí fica mais fácil para tratar isto.

danilovazb

Então, eu sou iniciante, muitas coisas ainda não sei como funciona.
Na verdade, sou entusiasta, nem como programador eu trabalho, apenas fiz o programa para me ajudar, fiz ele seguindo alguns passos de um livro que tenho da faculdade.

Mas vou pesquisar sobre o que disse e farei…obrigado mesmo \o

Criado 1 de julho de 2013
Ultima resposta 1 de jul. de 2013
Respostas 2
Participantes 2