Ler arquivo e remover Strings duplicadas

Publicado por Mayron Cachina 24/09/2007

[ Hits: 13.520 ]

Homepage: http://mayroncachina.net

Download LerTexto.zip




Pessoal, uma pequena aplicação para exercitar a escrita de arquivos...

Tive algumas dúvidas no começo de como ler todo o vetor e retirar as strings com duplicidade...

O código está todo comentado para melhor compreenção.

Mas ai está de um modo simples, fácil e descomplicado...

  



Esconder código-fonte

package br.com.dragon.utils.lerArquivo.exec;

import java.io.*;
import java.util.*;

public class Main {
    public String file;
    public static String origem;
    public static String destino;
    
    public Main(String file){
        this.file = file;
    }
    
    public void lerTexto() throws IOException{
        // VARIÁVEL ONDE SERÁ GUARDADA A LINHA PERCORRIDA
        String line = "";
        // Usamos os BufferedReader para abrir o arquivo.
        BufferedReader  bf = new BufferedReader(new FileReader(this.file));
        // Instanciamos uma collection para guardar o nosso conteúdo
        Collection lista = new ArrayList();
        // variáveis para contagem de linhas (só pra ficar mais bonitinho, hehehe)
        int linhaT = 0;
        int linhaF = 0;
        
        /* AQUI SERÁ ONDE VAMOS PREENCHER NOSSA LISTA */
        while ((line = bf.readLine()) != null)  {
            System.out.println("PERCORRENDO LINHA: " + linhaT++);
            // COMANDO PRA PREENCHER A LISTA "line"
            lista.add(line);
        }
        
        /* AQUI SERÁ O TRATAMENTO  
         * DA LISTA A SER SALVA
         * SEM REPETIÇÕES....
         */
        // O MÉTODO "LinkedHashSet" SERVE PARA NÃO EMBARALHAR A LISTA 
        // QUE NO CASO O COMANDO "HashSet" faz...
        Collection lista2 = new LinkedHashSet(lista);
        // CRIA O NOVO ARQUIVO ONDE SERÁ ARMAZENADA A LISTA
        File arquivo = new File(destino);
        
        // ABRE O ARQUIVO DE DESTINO PARA A GRAVAÇÃO
        BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo));
        // PERCORRE TODA A NOVA LISTA
        for (Object item : lista2){
            linhaF++;
            /* ESCREVE A LISTA NO ARQUIVO...
             * OBSERVE O TYPECAST FEITO POIS O 
             * FOR ESTÁ PASSANDO UM "Object"
             */
            bw.write((String) item);
            bw.newLine();
        }
        
        bw.flush();
        bw.close();
        
        System.out.println("VARREDURA COMPLETA...");
        System.out.println("TOTAL DE LINHAS NOVO ARQUIVO: " + linhaF);
    }
    
    
    public static void main(String[] args) {
        origem  = args[0];
        destino = args[1];
  
        Main l = new Main(origem);
        
        try{
            l.lerTexto();
        }catch (IOException ioe) {
            ioe.printStackTrace();
        }
        System.out.println("CONCLUIDO...");
    }
}

Scripts recomendados

Escrevendo num arquivo em java

Copia de um arquivo para outro

Manipulação de arquivos CSV

Microssistema de controle de compras

ImagemFacil 1.0, um editor de imagens recheado de recursos


  

Comentários
[1] Comentário enviado por washington.titan em 08/10/2007 - 17:40h

Mas seu programa nao funciona
O seu for naum esta dando certo porque???

[2] Comentário enviado por mayroncachina em 08/10/2007 - 18:50h

Olá washington.titan, acabei de rodar o mesmo código copiado e colado do aqui do site...
Funcionou direitinho...

coloquei em um arquivo txt as seguintes frases:
viva o linux
viva o linux
fora windows
Tio Bill
Tio Bill

e quando executei o comando:
java -jar LerArquivo.jar C:\log.txt C:\resposta.txt

ele me retornou:
viva o linux
fora windows
Tio Bill


Compilei com o Netbeans 5.5.1, acho muito pouco provável que seja a IDE que tenha dado problema...
Qual o FOR que vc disse q ta dando erro?!

[3] Comentário enviado por felipemartinsss em 28/08/2009 - 10:42h

Se a versão do Java for inferior a 1.5 o for abaixo pode apresentar problemas
for (Object item : lista2)

É o enhanced for. Substituir esse for por aquele for comum com um contador pode resolver.

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts