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

4 respostas
P

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) {
    }

}

}

4 Respostas

staroski

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();
}
P
Valeu Staroski! <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/g.pngrin.png?v=5" title=":grin:" class="emoji" alt=":grin:">

 mais uma dúvida como que  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!

staroski

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

P

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

Criado 22 de março de 2018
Ultima resposta 22 de mar. de 2018
Respostas 4
Participantes 2