Copiar conteudo de varios TXT

15 respostas
S

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

15 Respostas

Pedrosa

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

S

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

Beijo

lcegatti

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…

S

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

Ajudem-me…

Giulliano

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…

Emerson_Macedo

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

S

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

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();   
	       }

	}

}

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

lcegatti

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…

S

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

lcegatti

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…

S

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

Ajudem-me, por favor…
Obrigado

Beijo

S

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

Beijos

lcegatti

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…

S

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

lcegatti

Tente isso após o while:

while ((linha = br.readLine()) != null) {      
          fos.write(linha.getBytes());      
     }
     fos.write("\n".getBytes());
Criado 11 de janeiro de 2008
Ultima resposta 15 de jan. de 2008
Respostas 15
Participantes 5