Olá Gostaria de saber que API usar para conseguir (Usando JFileChooser escolher uma pasta) e a partir dai o java executar uma serie de copias (e substituicoes se necessario) para uma outra pasta pre-definida. Em linhas gerais substituir uma pasta por outra (incluindo o conteudo).
Tks
Copiar um arquivo ou diretório? Não existe isso pronto na API mas você pode fazer seu copiador de arquivos ou diretórios.
O problema, talvez, é que o Java não consegue copiar também as permissões dos arquivos (por exemplo, no Unix se um arquivo tem permissão de executável você não consegue setar essa permissão no arquivo copiado usando apenas Java, e no Windows você não consegue alterar a permissão para que o arquivo fique “read-only” ou pertença a um outro usuário qualquer); isso requer um programa externo (no caso do Unix, você deve ter de passar alguma opção para cp, e no caso do Windows, deve-se usar a opção /O para o programa xcopy.)
Ok, mas o que devo usar para este fim? Na verdade preciso copiar um diretorio e junto com ele outros diretorios e arquivos que estejam dentro. Devo usar metodos e classes System e File? Preciso achar a ponta do durex, dai desenrolo o resto entende!!!
Se quiser usar o comando do sistema operacional (cp no Unix e Linux, xcopy no Windows), então é suficiente usar Runtime.exec e ver exatamente quais são as opções mais adequadas para você.
Senão, você pode usar:
File.mkdirs - cria o diretório e subdiretórios necessários
File.remove - deleta um arquivo, caso necessário
java.nio.channels - Para fazer a cópia rápida de arquivos. Exemplo:
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
class TestCopy {
public static void main(String[] args) throws Exception {
File fIn = new File (args[0]);
File fOut = new File (args[1]);
FileInputStream fis = new FileInputStream (fIn);
FileOutputStream fos = new FileOutputStream (fOut);
FileChannel fcIn = fis.getChannel();
FileChannel fcOut = fos.getChannel();
fcOut.transferFrom (fcIn, 0, fIn.length());
fos.close();
fis.close();
}
}
Este programa copia um arquivo cujo nome é dado como primeiro argumento, para um arquivo cujo nome é dado como segundo argumento. Ele é tão rápido quanto o comando de cópia do seu sistema operacional. (O problema é que o “transferFrom” executa a cópia inteira de uma vez; não dá para você pôr uma barra de progresso para acompanhar a cópia.)