Melhor maneira de se copiar um File

4 respostas
A

Bom turma entrei em uma discussão, não sei direito a melhor forma de se copiar um arquivo File de uma pasta para outra.

Segue a maneira que eu estou fazendo, por favor me digam se é a melhor, e se não for como eu posso melhorar?

long size = item.getSize(); File file = new File(destino, nomeArquivo); FileOutputStream output = new FileOutputStream(file); InputStream is = item.getInputStream(); byte[] buffer = new byte[(int) size]; int nLidos; while ((nLidos = is.read(buffer)) >= 0) { output.write(buffer, 0, nLidos); } output.flush(); output.close();

Isso é para fazer o upload de um arquivo. Neste código que estou usando existe limitação de tamanho neh? qual é o tamanho máximo de um upload usando o commons-upload da apache?
Desculpa a dúvida simplória, mas é que isso está me dando duvidas mesmo.
Obrigado!

4 Respostas

Cesimar

Veja esse artigo: http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=3572

ViniGodoy

Se for só para copiar o arquivo, não para fazer upload, a melhor forma é através do FileChannel:
http://www.guj.com.br/posts/list/128689.java#693826

A
public static void copyFile(File source, File destination) throws IOException {
        if (destination.exists())
            destination.delete();

        FileChannel sourceChannel = null;
        FileChannel destinationChannel = null;

        try {
            sourceChannel = new FileInputStream(source).getChannel();
            destinationChannel = new FileOutputStream(destination).getChannel();
            sourceChannel.transferTo(0, sourceChannel.size(),
                    destinationChannel);
        } finally {
            if (sourceChannel != null && sourceChannel.isOpen())
                sourceChannel.close();
            if (destinationChannel != null && destinationChannel.isOpen())
                destinationChannel.close();
       }
   }
Pelo que eu entendi não conseguiria adaptar este código para o meu caso, é isso?

isso seria para cópia de arquivo normal mesmo né?

Veja esse artigo: http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=3572
Sim foi desse artigo que eu retirei meu codigo que eu postei, porém minha dúvida é: qual o tamanho máximo de upload que eu terei?
ganondorfan

Sem querer desvirtuar a parte academica do fórum, eu utilizaria o FileUtils do Jakarta.

FileUtils.copyFile(origem, destino);

Uma linha de código, se sua missao não é reinventar a roda, vai de Jakarta.

Criado 5 de outubro de 2010
Ultima resposta 7 de out. de 2010
Respostas 4
Participantes 4