Bom dia pessoal, preciso realizar um pre processamento de arquivos em java para uma atividade de datascience porém não estou obtendo sucesso. É muito simples, basta ler dois arquivos, comparar as chaves e a partir de chaves iguais correr o arquivo de consumo e marcar algumas variáveis com 1 caso ele apareça. O código é o seguinte:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
public class PréProcessamento {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
BufferedReader consumoin = null ;
BufferedReader pessoain = null;
String linhasaida = "0";
boolean write = false;
BufferedWriter processado = null;
String cons_celular = "0",cons_telfixo = "0",cons_shows = "0",cons_dvd = "0",cons_internet = "0", cons_cinema = "0";
String val_cons_celular = "0",val_cons_telfixo = "0",val_cons_shows = "0",val_cons_dvd = "0",val_cons_internet = "0", val_cons_cinema = "0";
String linhapessoa = null;
String linhaconsumo = null ;
String con_domclId = null;
String con_pessoaId = null;
String[] splitlinhaconsumo = null;
String[] splitlinhapessoa = null;
FileReader consumo = null;
try {
consumo = new FileReader("D:/BasesStataFINAL/testeconsumo.csv");
} catch (FileNotFoundException ex) {
Logger.getLogger(PréProcessamento.class.getName()).log(Level.SEVERE, null, ex);
linhaconsumo = ex.getMessage();
}
FileReader pessoas = null;
try {
pessoas = new FileReader("D:/BasesStataFINAL/testepessoa2.csv");
} catch (FileNotFoundException ex) {
Logger.getLogger(PréProcessamento.class.getName()).log(Level.SEVERE, null, ex);
}
consumoin = new BufferedReader(consumo);
boolean controle = consumoin.ready();
pessoain = new BufferedReader(pessoas);
try {
processado = new BufferedWriter(new FileWriter("D:/BasesStataFINAL/processado.csv"));
} catch (IOException ex) {
Logger.getLogger(PréProcessamento.class.getName()).log(Level.SEVERE, null, ex);
}
String dummies = "cons_celular. val_cons_celular ,cons_telfixo, val_cons_telfixo,cons_shows, val_cons_shows,cons_dvd, val_cons_dvd,cons_internet, val_cons_internet, cons_cinema, val_cons_cinema";
int i = 0;
while ((linhapessoa = pessoain.readLine())!= null)
{
splitlinhapessoa = linhapessoa.split(",");
String pessoaId = null;
pessoaId = splitlinhapessoa[0] ;
//pessoaId = pessoaId.substring(3);
float Idp = Float.parseFloat(pessoaId);
String domclId = null;
domclId = splitlinhapessoa[1];
float Iddc = Float.parseFloat(domclId);
//domclId = domclId.substring(3);
while ((linhaconsumo = consumoin.readLine())!= null)
{
splitlinhaconsumo = null;
splitlinhaconsumo = linhaconsumo.split(",");
con_pessoaId = null;
con_domclId = null;
con_pessoaId = splitlinhaconsumo[14];
//con_pessoaId = con_pessoaId.substring(2);
float concpId = Float.parseFloat(con_pessoaId);
con_domclId = splitlinhaconsumo[13];
//con_domclId = con_domclId.substring(2);
float condmId = Float.parseFloat(con_domclId);
processado.write("comparando " + domclId + " com " + con_domclId);
processado.newLine();
processado.write("comparando pessoa " + pessoaId + " com " + con_pessoaId);
processado.newLine();
// if (pessoaId.equals(con_pessoaId))
if (concpId == Idp)
{
processado.write("comparando pessoa dentro do laço pessoa " + pessoaId + " com " + con_pessoaId);
processado.newLine();
if ((("6".equals(splitlinhaconsumo[9])) && ("801".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1101".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1301".equals(splitlinhaconsumo[10])))|
(("28".equals(splitlinhaconsumo[9])) && ("2401".equals(splitlinhaconsumo[10])))|
(("28".equals(splitlinhaconsumo[9])) && ("2402".equals(splitlinhaconsumo[10]))))
{cons_celular = "1"; val_cons_celular = splitlinhaconsumo[11];}
if ((("6".equals(splitlinhaconsumo[9])) && ("801".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("901".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1101".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1401".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("401".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("501".equals(splitlinhaconsumo[10]))))
{cons_telfixo = "1"; val_cons_telfixo = splitlinhaconsumo[11];}
if (("28".equals(splitlinhaconsumo[9])) && ("1101".equals(splitlinhaconsumo[10])))
{
cons_shows = "1"; val_cons_shows = splitlinhaconsumo[11];
}
if ((("13".equals(splitlinhaconsumo[9])) && ("1701".equals(splitlinhaconsumo[10])))|
(("15".equals(splitlinhaconsumo[9])) && ("2701".equals(splitlinhaconsumo[10])))|
(("28".equals(splitlinhaconsumo[9])) && ("5701".equals(splitlinhaconsumo[10])))|
(("28".equals(splitlinhaconsumo[9])) && ("2601".equals(splitlinhaconsumo[10])))|
(("28".equals(splitlinhaconsumo[9])) && ("901".equals(splitlinhaconsumo[10]))))
{cons_dvd = "1"; val_cons_dvd = splitlinhaconsumo[11]; }
if ((("6".equals(splitlinhaconsumo[9])) && ("502".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("503".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("504".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("505".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("506".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("801".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("901".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1001".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1301".equals(splitlinhaconsumo[10])))|
(("6".equals(splitlinhaconsumo[9])) && ("1401".equals(splitlinhaconsumo[10]))))
{cons_internet = "1"; val_cons_internet = splitlinhaconsumo[11]; }
if (("28".equals(splitlinhaconsumo[9])) && ("101".equals(splitlinhaconsumo[10])))
{cons_cinema = "1"; val_cons_cinema = splitlinhaconsumo[11]; }
linhasaida = linhapessoa + "," + cons_celular + "," + val_cons_celular + "," + cons_telfixo+ "," + val_cons_telfixo +
"," + cons_shows + "," + val_cons_shows + "," + cons_dvd + "," + val_cons_dvd + "," + cons_internet + "," + val_cons_internet
+ "," + cons_cinema + "," + val_cons_cinema;
write = true;
}else
{
write = false;
}
//if (domclId.equals(con_domclId))
if (condmId == Iddc)
{
processado.write("comparando dentro do laço domicilio " + domclId + " com " + con_domclId);
processado.newLine();
if ((("6".equals(splitlinhaconsumo[9])) && ("801".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1101".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1301".equals(splitlinhaconsumo[10])))||
(("28".equals(splitlinhaconsumo[9])) && ("2401".equals(splitlinhaconsumo[10])))||
(("28".equals(splitlinhaconsumo[9])) && ("2402".equals(splitlinhaconsumo[10]))))
{cons_celular = "1"; val_cons_celular = splitlinhaconsumo[11];}
if ((("6".equals(splitlinhaconsumo[9])) && ("801".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("901".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1101".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1401".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("401".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("501".equals(splitlinhaconsumo[10]))))
{cons_telfixo = "1"; val_cons_telfixo = splitlinhaconsumo[11];}
if (("28".equals(splitlinhaconsumo[9])) && ("1101".equals(splitlinhaconsumo[10])))
{
cons_shows = "1"; val_cons_shows = splitlinhaconsumo[11];
}
if ((("13".equals(splitlinhaconsumo[9])) && ("1701".equals(splitlinhaconsumo[10])))||
(("15".equals(splitlinhaconsumo[9])) && ("2701".equals(splitlinhaconsumo[10])))||
(("28".equals(splitlinhaconsumo[9])) && ("5701".equals(splitlinhaconsumo[10])))||
(("28".equals(splitlinhaconsumo[9])) && ("2601".equals(splitlinhaconsumo[10])))||
(("28".equals(splitlinhaconsumo[9])) && ("901".equals(splitlinhaconsumo[10]))))
{cons_dvd = "1"; val_cons_dvd = splitlinhaconsumo[11]; }
if ((("6".equals(splitlinhaconsumo[9])) && ("502".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("503".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("504".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("505".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("506".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("801".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("901".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1001".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1301".equals(splitlinhaconsumo[10])))||
(("6".equals(splitlinhaconsumo[9])) && ("1401".equals(splitlinhaconsumo[10]))))
{cons_internet = "1"; val_cons_internet = splitlinhaconsumo[11]; }
if (("28".equals(splitlinhaconsumo[9])) && ("101".equals(splitlinhaconsumo[10])))
{cons_cinema = "1"; val_cons_cinema = splitlinhaconsumo[11]; }
linhasaida = linhapessoa + "," + cons_celular + "," + val_cons_celular + "," + cons_telfixo+ "," + val_cons_telfixo +
"," + cons_shows + "," + val_cons_shows + "," + cons_dvd + "," + val_cons_dvd + "," + cons_internet + "," + val_cons_internet
+ "," + cons_cinema + "," + val_cons_cinema;
write = true;
}else
{
write = false;
}
}
}
processado.close();
consumoin.close();
pessoain.close();
}
}
Porém ele não está executando todos os laços necessários. alguma dica? O arquivo testeconsumo possui 197.980 Kb e o testepessoa2 tem 3.282 kb.