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ó!!!
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
SoniaMarina
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”);
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
SoniaMarina
O que eu fiz foi algo assim, mas não dá nada...
packageVarios;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.io.IOException;publicclassvarios{/** * @param args */publicstaticvoidmain(String[]args){Filefile=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");FileReaderfr=null;BufferedReaderbr=null;Stringlinha="";FilearquivoDestino=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");FileOutputStreamfos=null;try{fr=newFileReader(file);br=newBufferedReader(fr);fos=newFileOutputStream(arquivoDestino);while((linha=br.readLine())!=null){fos.write(linha.getBytes());}fos.flush();fos.close();}catch(FileNotFoundExceptionfnex){// TODO Auto-generated catch block fnex.printStackTrace();}catch(IOExceptionioex){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:
publicstaticvoidmains(String[]args){Filediretorio=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");Filearquivo=null;File[]arquivos=null;FileReaderfr=null;BufferedReaderbr=null;Stringlinha="";FilearquivoDestino=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");FileOutputStreamfos=null;try{if(diretorio.isDirectory()){arquivos=diretorio.listFiles();for(inti=0;i<arquivos.length;i++){arquivo=arquivos[i];}fr=newFileReader(arquivo);br=newBufferedReader(fr);fos=newFileOutputStream(arquivoDestino);while((linha=br.readLine())!=null){fos.write(linha.getBytes());}}fos.flush();fos.close();}catch(FileNotFoundExceptionfnex){fnex.printStackTrace();}catch(IOExceptionioex){ioex.printStackTrace();}}
Espero que funcione…
S
SoniaMarina
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.publicstaticvoidmains(String[]args){Filediretorio=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");Filearquivo=null;File[]arquivos=null;FileReaderfr=null;BufferedReaderbr=null;Stringlinha="";FilearquivoDestino=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");FileOutputStreamfos=null;try{if(diretorio.isDirectory()){arquivos=diretorio.listFiles();for(inti=0;i<arquivos.length;i++){arquivo=arquivos[i];fr=newFileReader(arquivo);br=newBufferedReader(fr);fos=newFileOutputStream(arquivoDestino);while((linha=br.readLine())!=null){fos.write(linha.getBytes());}}}fos.flush();fos.close();}catch(FileNotFoundExceptionfnex){fnex.printStackTrace();}catch(IOExceptionioex){ioex.printStackTrace();}}
flwss…
S
SoniaMarina
Não está funconando na mesma!!!Só me lê um arquivo dentro da pasta:(
Ajudem-me, por favor…
Obrigado
Beijo
S
SoniaMarina
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…
publicstaticvoidmains(String[]args){Filediretorio=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\Textos2");Filearquivo=null;File[]arquivos=null;FileReaderfr=null;BufferedReaderbr=null;Stringlinha="";FilearquivoDestino=newFile("C:\Documents and Settings\Sonia\Ambiente de trabalho\Projecto\textt.txt");FileOutputStreamfos=null;try{if(diretorio.isDirectory()){fos=newFileOutputStream(arquivoDestino);arquivos=diretorio.listFiles();for(inti=0;i<arquivos.length;i++){arquivo=arquivos[i];fr=newFileReader(arquivo);br=newBufferedReader(fr);while((linha=br.readLine())!=null){fos.write(linha.getBytes());}}}fos.flush();fos.close();}catch(FileNotFoundExceptionfnex){fnex.printStackTrace();}catch(IOExceptionioex){ioex.printStackTrace();}
flwss…
S
SoniaMarina
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???