Pessoal uma pequena aplicação para exercitar a escrita de arquivos. Tive algumas duvidas no começo de como ler todo o vetor e retirar as strings com duplicidade, mais ai está de um modo simples, fácil e descomplicado.

Estou disponibilizando os fontes (no Netbeans) para download.

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...");
    }
}