quarta-feira, 19 de novembro de 2008

JAVA: Copiar Arquivo

Esse pequeno trecho de código mostra como fazer cópias de arquivos em Java.

A classe FileCopy possui o método copy que tem como parâmetros o caminho do arquivo de origem (à ser copiado), e o caminho do arquivo de destino.


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileCopy {

public boolean copy(String infile, String outfile) {

try {

//abre as streams
InputStream in = new FileInputStream(infile);
OutputStream out = new FileOutputStream(outfile);

byte[] buf = new byte[1024];
int len;

//transfere os bytes da stream in para a out
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}

//fecha os arquivos
in.close();
out.close();
return true;

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return false;
}


public static void main(String[] args) {
FileCopy file = new FileCopy();
boolean res = file.copy("/tmp/tux-ubuntu.jpg", "/tmp/tux-ubuntu-copia.jpg");

System.out.println("File copied? " + res);
}
}


O método copy abre o arquivo de origem e transfere seus bytes para o arquivo de destino, criando assim uma cópia do arquivo. No código de exemplo, o arquivo tux-ubuntu.jpg será copiado para o arquivo tux-ubuntu-copia.jpg.

Resultado após executar o programa:










Download do código fonte: FileCopy.java

2 comentários:

Cyber disse...

Acho que se mudar as linhas:

InputStream in = new FileInputStream(infile);

OutputStream out = new FileOutputStream(outfile);

Pra:

InputStream in = new BufferedInputStream(new FileInputStream(infile));

OutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));

Vai acelerar o processo!

[]s
Cyber

Eiti Kimura disse...

Valeu pela dica Cyber!

Vou fazer uns testes com o BufferedInputStream.

Abraço,