Fiz um exemplo aqui rapido, vê se te ajuda, qualquer coisa é só falar :)
Abraços,
Daniel
packagecom.io.sample2;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.nio.channels.FileChannel;importjava.util.Scanner;/** * Como faria para copiar todos os arquivos de uma pasta pela extensão ? */publicfinalclassFileCopy{privateFilefromDirectory;privateFiletoDirectory;privateStringfileExtension;publicstaticvoidmain(String[]args){FileCopymain=newFileCopy();main.enterInfo();main.checkDirAndExtension(main.fromDirectory,main.toDirectory,main.fileExtension);}privatevoidenterInfo(){Scannerin=newScanner(System.in);System.out.println("Entre com o nome do diretorio de origem : [ex : /Users/Desktop]");fromDirectory=newFile(in.nextLine());System.out.println("Entre com o nome do diretorio de destino : [ex : /Users/Desktop/test]");toDirectory=newFile(in.nextLine());System.out.println("Enter with file extension : [ex: .pdf]");fileExtension=in.nextLine();}privatevoidcheckDirAndExtension(FilefromDirectory,FiletoDirectory,Stringextension){if(fromDirectory.isDirectory()&&toDirectory.isDirectory()){for(Filefile:fromDirectory.listFiles()){if(file.getName().endsWith(extension)){passFileToCopy(file,toDirectory);}}}}privatevoidpassFileToCopy(FilefileTocopy,FiletoDirectory){try{//create a mirror file at the destination folderFilemirrorFile=newFile(toDirectory.getPath()+"/"+fileTocopy.getName());//open channelsFileChannelsourceChannel=newFileInputStream(fileTocopy).getChannel();FileChanneldestinationChannel=newFileOutputStream(mirrorFile).getChannel();//transfer byteslongsize=sourceChannel.size();sourceChannel.transferTo(0,size,destinationChannel);System.out.println("File : "+fileTocopy.getName()+" copiado para o diretorio : "+toDirectory);}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}}
J
jhonatan_muller
valeu daniel o metodo funcionou .
mas so mais uma duvida em alguns arquivos da um exeception
pesquisei sobre a classe map mas não encontrei um maneira de resolver isso
o windows copia normal os arquivos.
mais valeu pela resposta rapida.
M
Mauricio_Linhares1 like
O problema acontece porque os arquivos não estão sendo fechados e os buffers estão ficando na memória, uma forma mais simples de se implementar isso seria assim: