Copiar conteúdo de vários txts que estão em uma pasta para um único TXT - Tópico repetido - Não resolveu meu problema

Segui o tópico Copiar conteudo de varios TXT
Eu gostaria que o programa lesse todos os arquivos TXT de dentro de uma pasta, copiasse o conteúdo que tem em cada um deles e passasse para um arquivo separado.
Porém, o arquivo em separado não é criado automaticamente a partir da execução dessa aplicação que segui no tópico citado aí em cima. Ao abrir a pasta, há sempre os mesmos arquivos!!!

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

public class varios {

/**
 * @param args
 */
public static void main (String[] args) {
    File diretorio;
    diretorio = new File("C:caminho onde estão os arquivos");
    File arquivo = null;
    File[] arquivos = null;
    FileReader fr = null;
    BufferedReader br = null;
    String linha = "";
    File arquivoDestino = new File("C: caminho do arquivo de destino\\ nome_do_arquivo_de_destino.txt"); 
    FileOutputStream fos = null;
    try {
        if (diretorio.isDirectory()) {
            arquivos = diretorio.listFiles();
            fos = new FileOutputStream(arquivoDestino);  
            for (int i = 0; i < arquivos.length; i++) {
                arquivo = arquivos[i];
                fr = new FileReader(arquivo);
                br = new BufferedReader(fr);
                while ((linha = br.readLine()) != null) {
                    fos.write(linha.getBytes());
                }
                fos.write("\n".getBytes());
            }
        }
        fos.flush();
        fos.close();
    } catch (FileNotFoundException fnex) {
    } catch (IOException ioex) {
    }

}

}

Deveria funcionar.

Aqui um exemplo um pouco diferente:

try {
    File diretorio = new File("C:\\Documents and Settings\\Sonia\\Ambiente de trabalho\\Projecto\\Textos2");
    File arquivoDestino = new File("C:\\Documents and Settings\\Sonia\\Ambiente de trabalho\\Projecto\\textt.txt");
    PrintWriter escritor = new PrintWriter(new FileWriter(arquivoDestino));
    char[] buffer = new char[8192];
    for (File arquivoOrigem : diretorio.listFiles()) {
        BufferedReader leitor = new BufferedReader(new FileReader(arquivoOrigem));
        for (int lidos = -1; (lidos = leitor.read(buffer)) != -1; escritor.write(buffer, 0, lidos)) {}
        escritor.println();
        leitor.close();
    }
    escritor.flush();
    escritor.close();
} catch (IOException ioex) {
    ioex.printStackTrace();
}
1 curtida

Valeu Staroski! :grin:
Só mais uma dúvida como que dá um \n nas informações do arquivo que junta o conteúdo dos demais ?
No outro tópico ela sugeriu isso aqui
while ((linha = br.readLine()) != null) {
fos.write(linha.getBytes());
}
fos.write("\n".getBytes());

Tentei umas coisas no que você me mandou, mas não deu certo!

No código que postei isso é feito com o escritor.println().
Se você quer uma linha em branco, coloque mais um escritor.println().

1 curtida

Muitooo obrigadoo!!! :blush: Perfeitoo!!!

1 curtida