Как скопировать файл в Java? 4 способа – примеры и код

Как скопировать файл в Java? 4 способа — примеры и код

В классе java.io.File нет ни одного метода скопировать файл с одного места в другое. Поэтому в этой статье мы рассмотрим несколько наиболее используемых способов копирования файла.

Способ 1: Используем потоки для копирования файла

Этот способ является наиболее используемым. Его суть состоит в следующем: создаем два файла (что копировать и куда копировать файл). Затем создаем InputStream от источника и записать его в результирующий файл-копию с использованием OutputStream.

Ниже представлен метод на Java для копирования файла с использованием потоков:

Способ 2: Используем FileChannel

Для копирования файла также можно использовать java.nio.channels.FileChannel. В этом классе есть очень полезный метод transferFrom(), который также очень часто используется для копирования файлов. Согласно документации, этот способ копирования файла работает быстрее, чем при использовании потоков (InputStream,OutputStream).

Ниже приведен метод копирования файлов с помощью класса FileChannel:

Способ 3: Используем Apache Commons IO

В Apache Commons IO есть отличный класс FileUtils с методом copyFile(File srcFile, File destFile) может быть использован для копирования файла в Java. Если вы уже используете Apache Commons IO в вашем проекте, то есть смысл использовать метод copyFile(File srcFile, File destFile) для простоты и удобства кода. Внутри себя он использует NIO FileChannel, предоставляя программисту лишь удобную оболочку.

Ниже приведен пример использования Apache Commons IO для копирования файлов в Java.

Способ 4: Используем класс Files (начиная с Java 7)

Класс Files был введен в Java 7 и предоставляет метод copy() для копирования файла. Он использует встроенные возможности системы, чтобы скопировать файл.

Какой метод копирования файла в Java самый лучший?

Так какой же метод копирования файла в Java является наиболее быстрым и эффективным? Для теста были использованы разные файлы размером 1Gb.

Я решил проверить быстродействие каждого метода копирования файла и написал вот такой класс:

Результат выполнения программы:

По результатам выполнения программы видно, что лучшим способом копирования файла в Java является использование потоков, то есть первого способа в нашей подборке.

Следует отметить, что в ходе разработки разных проектов на Java, все-таки желательно использовать разные методы копирования файлов. Дело в том, что многое зависит от количества файлов и их размера. В нашем случае мы тестировали файлы размером 1Gb.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *