bom pessoal resolvi após meses de estudo de java na FJ-11 decidi fazer meu primeiro programa realmente funcional.
estou catando emails de empresas de desenvolvimento na net pra enviar meu currículo e salvo num arquivo txt onde antes de enviar verifico num outro arquivo txt de emails anteiormente enviados pra ver se tem algum repetido, processo manual e cansativo , razao pela qual quis criar esse programinha.
quero que o progr delete o email repetido do arquivo emails_novos.txt
Então um colega aqui me forneceu esse codigo abaixo que faz o que eu pedi…mas to com varias duvudas que coloquei em coment e peço a ajuda de todos ai pessoal !!
abaixo:
import java.util.*;
import java.io.*;
class DiferencaArquivos {
//abaixo: ñ entendi o parametro "final String" ! E por que tens q indicar nomeArquivoEntrada se aqui será um conjunto e quem le e precisa da referencia do nome do orquivo de onde sera lido é o BufferedReader?
private Set<String> lerArquivo (final String nomeArquivoEntrada) throws IOException {
Set<String> emails = new TreeSet<String>(new Comparator<String>() { // aqui um conjunto...ok,
public int compare (String s1, String s2) { // ñ entendi essa comparação -ñ é lida uma string p/vez do arq. origem?
return s1.compareToIgnoreCase (s2);
}
});
BufferedReader br = new BufferedReader (new FileReader (nomeArquivoEntrada)); // ok..o BufferedReader localiza o arq p/ ler
for (String linha = br.readLine(); linha != null; linha = br.readLine()) { //aqui ok tb.. um FOR pra ler todas linhas
String email = linha.trim(); // tranquilo... tirou espaços em bco a esq e a dir antes de guardar na variavel
if (email.length() > 0) { // ok... um testezinho pra não gravar string em bco
emails.add (email.trim());
} //acima: ... já nao tirou os espaços 2 linhas acima desta? pensei q devia passar só "emails.add (email);"
}
br.close();
return emails;
}
private void gravarArquivo (final String nomeArquivoSaida, Set<String> emails) throws IOException {
PrintWriter pw = new PrintWriter (nomeArquivoSaida);
for (String email : emails) {
pw.println (email);
}
pw.close();
}
public static void main (String[] args) throws Exception {
DiferencaArquivos da = new DiferencaArquivos();
Set<String> emailsEnviados = da.lerArquivo (args[0]); // tem alguma validade esse parametro??
Set<String> emailsAEnviar = da.lerArquivo (args[1]); // idem aqui
Set<String> resultado = new TreeSet<String>();
// Queremos remover, de emailsAEnviar, todos os emails que estão em emailsEnviados
resultado.addAll (emailsAEnviar);
resultado.removeAll (emailsEnviados);
da.gravarArquivo (args[2], resultado); // achei que o parametro aqui devia ser apenas "resultado"
}
}