Copiar conteudo de varios TXT

Oi pessoal…mais uma vez venho à procura da vossa ajuda!!!
Alguém sabe ou tem um programa que copie o conteudo de varios ficheiros TXT para um só ficheiro TXT?!
O que está dentro desses ficheiros são textos, e queria juntar todos esses textos num só!!!

Agradecia imenso a vossa ajuda…

Obrigado

http://www.guj.com.br/posts/list/30377.java#163154

Obrigado pela ua ajuda…mas nao tem algo mais simples?É que sou um pouco má em Java:)

Beijo

Ola Sonia, seria ± assim o código:

                File file = new File("caminho");
		
		FileReader fr = null;
		BufferedReader br = null;
		
		String linha = "";
		File arquivoDestino = new File("caminho arqui destino");
		FileOutputStream fos = null;
		try {
			 fr = new FileReader(file);
			 br = new BufferedReader(fr);
			 fos = new FileOutputStream(arquivoDestino);
			 
			 while((linha = br.readLine()) != null) {
				 fos.write(linha.getBytes());
			 }
			 fos.flush();
			 fos.close();
		} catch (FileNotFoundException fnex) {
			// TODO Auto-generated catch block
			fnex.printStackTrace();
		} catch (IOException ioex) {
			ioex.printStackTrace();
		}

Você iria ler todos os arquivos e grava-los em um de destino, nesse caso a leitura esta sendo feito em apenas um arquivo com n linhas.
Espero ter ajudado…

Não percebo como leio o directorio onde estao os ficheiros, e depois gravo em um so ficheiro!!!

Ajudem-me…

Aqui vc indica a pasta onde se encontram seus arquivos:
File file = new File(“caminho”);

Aqui é o desdtino do novo documento:
File arquivoDestino = new File(“caminho arqui destino”);

Aqui vc escreve o conteudo parta um novo arquivo:
while((linha = br.readLine()) != null) {
fos.write(linha.getBytes());
}

Só tem um problema para pegar vários arquivos de um diretório vc precisa criar um File diretorio = new File(“diretorio dos arquivos”); e aí vc vai precisar listar todos os arquivos lá dentro e enquanto houver arquivos vc escreve o conteúdo…

Infelizmente não acho q alguém vá fazer o programa pra vc, mesmo pq isso aqui é um forúm e não uma consultoria. Se vc não soubre fazer isso q eu lhe disse provavelmente não vai entender o resto…

Sônia,

Se você estiver usando algo unix-like ou puder instalar em sua máquina um cygwin pode usar o seguinte comando:

cat arquivo1 arquivo2 arquivoN > arquivoComTudo.

[]s

O que eu fiz foi algo assim, mas não dá nada…

[code]package Varios;

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 file = new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");   
       
       FileReader fr = null;   
       BufferedReader br = null;   
         
       String linha = "";   
       File arquivoDestino = new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");   
       FileOutputStream fos = null;   
       try {   
            fr = new FileReader(file);   
            br = new BufferedReader(fr);   
            fos = new FileOutputStream(arquivoDestino);   
              
            while((linha = br.readLine()) != null) {   
                fos.write(linha.getBytes());   
            }   
            fos.flush();   
            fos.close();   
       } catch (FileNotFoundException fnex) {   
           // TODO Auto-generated catch block   
           fnex.printStackTrace();   
       } catch (IOException ioex) {   
           ioex.printStackTrace();   
       }

}

}
[/code]

em que,
File file = new File(“C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2”)
é o caminho da pasta (Textos2) em que tem lá dentro 30000 ficheiros TXT, com textos.

e copio para,
File arquivoDestino = new File(“C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\texttt.txt”);

é assim?

Obrigado, Beijo

Ola Sonia, é quase isso, agora vc tem apenas que pegar todos os arquivos que estão em seu diretório e ler eles um a um, tente este exemplo:

        public static void mains(String[] args) {
        File diretorio = 
            new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");
        File arquivo = null;
        File[] arquivos = null;
        FileReader fr = null;
        BufferedReader br = null;

        String linha = "";
        File arquivoDestino = 
            new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");
        FileOutputStream fos = null;
        try {
            if (diretorio.isDirectory()) {
                arquivos = diretorio.listFiles();
                for (int i = 0; i < arquivos.length; i++) {
                    arquivo = arquivos[i];
                }
                fr = new FileReader(arquivo);
                br = new BufferedReader(fr);
                fos = new FileOutputStream(arquivoDestino);
                while ((linha = br.readLine()) != null) {
                    fos.write(linha.getBytes());
                }
            }

            fos.flush();
            fos.close();
        } catch (FileNotFoundException fnex) {
            fnex.printStackTrace();
        } catch (IOException ioex) {
            ioex.printStackTrace();
        }
    }

Espero que funcione…

Obrigados por tentarem ajudar…
Mas à um problema no codigo que me deu, so está a criar o ficheiro textt com o conteudo do ultimo TXT do directorio Textos2!!!Não os está a copiar todos para o ficheiro textt:(

Podem ajudar?
Obrigado

Opss … depois que vc falou que eu percebi, tem um erro nesse código que lhe passei, o certo seria assim:

   1. public static void mains(String[] args) {  
    File diretorio =   
        new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");  
    File arquivo = null;  
    File[] arquivos = null;  
    FileReader fr = null;  
    BufferedReader br = null;  
      
    String linha = "";  
   File arquivoDestino =   
       new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");  
   FileOutputStream fos = null;  
   try {  
       if (diretorio.isDirectory()) {  
           arquivos = diretorio.listFiles();  
           for (int i = 0; i < arquivos.length; i++) {  
               arquivo = arquivos[i];  
                   
                fr = new FileReader(arquivo);  
                br = new BufferedReader(fr);
                fos = new FileOutputStream(arquivoDestino);  
                while ((linha = br.readLine()) != null) {  
                   fos.write(linha.getBytes());  
               }  
          }  
       }  
     
       fos.flush();  
       fos.close();  
   } catch (FileNotFoundException fnex) {  
       fnex.printStackTrace();  
   } catch (IOException ioex) {  
       ioex.printStackTrace();  
   }  
}

flwss…

Não está funconando na mesma!!!Só me lê um arquivo dentro da pasta:(

Ajudem-me, por favor…
Obrigado

Beijo

Ajudem-me lá, por favor mestres do Java:(

Beijos

Tenta agora, o objeto de escrita estava sendo instanciado em toda iteração do loop por isso sempre um arquivo estava sendo gravado…

 public static void mains(String[] args) {    
 File diretorio =     
      new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");    
 File arquivo = null;    
 File[] arquivos = null;    
 FileReader fr = null;    
 BufferedReader br = null;    
      
 String linha = "";    
 File arquivoDestino =     
     new File("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");    
 FileOutputStream fos = null;    
 try {    
     if (diretorio.isDirectory()) {    
          fos = new FileOutputStream(arquivoDestino); 
          arquivos = diretorio.listFiles();    
         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.flush();    
     fos.close();    
 } catch (FileNotFoundException fnex) {    
     fnex.printStackTrace();    
 } catch (IOException ioex) {    
     ioex.printStackTrace();    
 }    

flwss…

Agora sim, funcionou direito…só mais uma duvidazinha!!!Como posso por espaço entre cada aqrquivo copiado???Tipo um \n???Para separar cada arquivo…onde coloco no programa???

Obrigado, Beijo

Tente isso após o while:

     while ((linha = br.readLine()) != null) {      
          fos.write(linha.getBytes());      
     }
     fos.write("\n".getBytes());