Problema em copiar arquivos de um diretório para outro

4 respostas
C

Pessoal peguei esses procedimentos mais não estou conseguindo fazer a chamada do copyDiretorio(File srcDir, File dstDir).
Que tipo de dado eu devo enviar como parâmetro ?
claro que é do tipo file mais não estou conseguindo.
Tentei

File entrada = new File("caminho do arquivo");
        File saida = new File("caminho do arquivo");
        copyDiretorio(entrada,saida);

Mais não aceita
retorna o seguinte erro

unreported exception java.io.IOException; must be caught or declared to be thown

Ficaria muito grato pela ajuda.

public  void copyFile(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);
    
        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }

        // Copies all files under srcDir to dstDir.
    // If dstDir does not exist, it will be created.
    public void copyDiretorio(File srcDir, File dstDir) throws IOException {
        if (srcDir.isDirectory()) {
            if (!dstDir.exists()) {
                dstDir.mkdir();
            }
    
            String[] children = srcDir.list();
            for (int i=0; i<children.length; i++) {
                copyDiretorio(new File(srcDir, children[i]),
                                     new File(dstDir, children[i]));
            }
        } else {
            // This method is implemented in e1071 Copying a File
            copyFile(srcDir, dstDir);
        }
    }

4 Respostas

A

Veja se o método principal de onde chamas os métodos copyFile() e copyDiretorio tem a extenção throws IOException também.

Exemplo:

public static void main(String[] args) throws IOException {

copyFile();
     copyDiretorio();

}

Se nao for o caso desculpe ai chipmaster!

C

Alamão não deu certo, até porque o copyFile eu consigo chamar tranquilo problema´é mesmo com o copyDiretorio.

Claro que mesmo assim segui a sua dica mais realmente não mudou nada.
Mais obrigado pela tentativa.

C

o copyFile tambem não consigo fazer a chamada.

estou usando um evento de um Jbotton.

private void B_copiaActionPerformed(java.awt.event.ActionEvent evt) {                                        
        File entrada = new File("");
        File saida = new File("");
   //             copyDiretorio(entrada,saida);
        if (copyFile2(T_origem.getText(),T_destino.getText())==true){
           JOptionPane.showMessageDialog(null,"Arquivo copiado com sucesso");
       }
        
    }

O copyFile2 funcioando sem problemas mais eu queria copiar todos os arquivos e subpastas de um diretório coisa que o copyFile2 não faz só copia um arquivo único.
dequalquer forma vou colocar o cod dele para quem estiver precisando.

public boolean copyFile2(String inFile, String outFile) {
      InputStream is = null;
      OutputStream os = null;
      byte[] buffer;
      boolean success = true;
      try {
       
         is = new FileInputStream(inFile);
         os = new FileOutputStream(outFile);

            buffer = new byte[is.available()];
               is.read(buffer);
               os.write(buffer);
                

      } catch (IOException e) {
         success = false;
      } catch (OutOfMemoryError e) {
         success = false;
      } finally {
         try {
            if (is != null) {
               is.close();
            }
            if (os != null) {
               os.close();
            }
         } catch (IOException e) {}
      }
      return success;
   }

Bom voltando ao problema, o que pode ser que não consigo fazer a chamada ao copyDiretorio ?

J

parece que o erro é porque vc não implementou o try catch no local onde vc chama o copyDiretorio

Criado 24 de maio de 2008
Ultima resposta 24 de mai. de 2008
Respostas 4
Participantes 3