CARDÁPIO

Cópia do arquivo Java (alterar tamanho do buffer)

índice

Cópia do arquivo Java (alterar tamanho do buffer)

Em Java java.io.InputStream,,java.io.OutputStream no
Apresentando um programa de exemplo que executa processamento de cópia usando fluxos de entrada/saída.
No processamento de cópia usando fluxos, mesmo arquivos grandes podem ser copiados de forma relativamente rápida aumentando o tamanho do buffer de leitura.
No programa de exemplo, o tamanho do buffer de leitura de dados pode ser especificado com um argumento.

A área de buffer de leitura especificada é protegida no heap JavaVM, portanto, torná-la muito grande resultará em baixa eficiência. Portanto, também verificamos o tamanho eficiente do buffer de leitura de dados ao copiar arquivos.

programa de amostra


execução

Para copiar o arquivo de programa de amostra, preparamos um arquivo "100M.txt" de 100 MB diretamente na unidade C. No programa de exemplo, C:\100M.txt , leia os dados em unidades com tamanho de buffer de 1000 KB. C:\a.txt Copiar para.

A amostra foi executada no ambiente a seguir.
SO: WindowsXP
Processador: Athlon 1,46 GHz
Memória: 1GB
JRE: 1.6.4

◆Exemplo de execução

/** * Exemplo de execução * @param args */ public static void main(String[] args) { try { copyStream("C:\\100M.txt", "C:\\a.txt",1000); } catch (IOException e) { e.printStackTrace(); } }

◆Resultados de execução


Alterando o tamanho do buffer

Para verificar o tamanho eficiente do buffer de leitura de dados ao copiar arquivos, defina o terceiro argumento de copyStream como
Os resultados de processamento de cópia semelhante em unidades de 1 KB, 100 KB, 1.000 KB e 10.000 KB estão resumidos abaixo.



Embora não se possa concluir apenas pelos resultados acima, se você especificar o tamanho do buffer de leitura de dados em unidades de 1000 KB,
Os resultados mostraram que ele foi eficiente em termos de uso de heap e tempo de processamento durante o processamento de cópias.
Resultados semelhantes foram obtidos mesmo quando o tamanho do arquivo foi aumentado (aproximadamente 1GB).

Por outro lado, ao copiar um arquivo pequeno (cerca de 1 MB ou menos), aumentar o tamanho do buffer será um desperdício, então acho melhor especificar cerca de 100 KB.

Use FileChannel para velocidades mais rápidas


 java.io.InputStream,,java.io.OutputStream
O processamento de cópias é importante para a compreensão dos fluxos de entrada/saída, mas
Nova E/S introduzida no J2SE1.4 java.nio.channels.FileChannel#transferTo
Ao usar este método, você pode copiar arquivos com ainda mais eficiência.
A seguir, mostrarei como copiar arquivos de maneira fácil e rápida usando FileChannel.
Cópia de arquivo Java (fácil e rápida)

  • URLをコピーしました!
índice