Хотя Java предоставляет операционный класс IO, который может обрабатывать файлы, нет метода копирования файлов. Копировать файлы являются важной операцией. Тем не менее, есть несколько методов, которые могут быть воспроизведены файлом Java, и самые популярные методы в 4 приведены ниже.
1. Скопируйте с помощью FileStreams
Это самый классический способ скопировать содержимое одного файла в другой файл. Прочитайте байты файла A с помощью FileInputStream и напишите его в файл B с FileOutputStream. Это код первого метода:
Private Statice CopyFileUsingFileStreams (источник файла, файл dest). [1024];
Когда вы видите несколько данных о операциях чтения и письма, это должно быть низкой.
2. Используйте FileChannel для копирования
Java Nio включает в себя метод Transferfrom, который должен быть быстрее, чем копия потока файла в соответствии с документом. Это код второго метода:
Private Static void CopyFileusingFileChannels (источник файла, файл dest) , 0, inputChanle.size ());
3. Используйте Commons io для копирования
Apache Commons IO предоставляет метод копирования файла в своем классе FileUtils, который можно использовать для копирования одного файла в другое место. Вам очень удобно использовать свой проект при использовании класса Apache Commons FileUtils. По сути, этот класс использует Java Nio FileChannel. Это код третьего метода:
Private Static void CopyFileusingApacheCommonsio (источник файла, файл dest) бросает ioException {fileUtils.copyfile (источник, dest);}4. Скопируйте с классом файлов java7
Если у вас есть некоторый опыт работы в Java 7, вы можете знать, что вы можете использовать метод копирования файлов файлов для копирования из одного файла в другой файл. Это код четвертого метода:
Private Static void CopyFileusingJava7files (источник файла, файл dest) бросает ioException {files.copy (source.topath (), dest.topath ());}5. тест
Теперь посмотрите, какой из этих методов является более эффективным, мы скопируем большой файл для использования каждой простой программы. От кэша, чтобы избежать каких -либо производительности, мы, очевидно, будем использовать четыре различных исходных файла и четыре различных целевых файла. Давайте посмотрим на код:
Импорт Java.io.file; .nio.file.files; /nikos7//desktop/files/sourcefile1.txt "); файл dest = new File (" c: //users/nikos7//desktop/files/destfile1.txt ") копировать файл с использованием fileStreams Long Start = System.Nanotime ( ); = Новый файл ("c: //users/nikos7//desktop/files//sourcefile2.txt"); Source, dest); //Users//nikos7//desktop//sourcefile3.txt "); dest = new File (" c: //users//nikos7//desktop/files/destfile3.txt "); start = system.nanotime () ; //Files//sourcefile4.txt "); dest = new File (" c: //users/nikos7//desktop/files/destfile4.txt "); start = system.nanotime (); sio (источник, destry) ; null; write (buf, 0, bytesread);}} наконец {input.close (); Null; {inputChannel.close (); , Файл dest) бросает ioException {fileUtils.copyfile (source, dest);}}}Выход:
Время, затрачиваемое с помощью копии FileStreams = 127572360time, взятое с помощью Copy FileChannels = 10449963 Время, взятое с помощью файлов Java7, копия файлов = 108083333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
Точно так же, как вы можете видеть, что FileChannels копировать большие файлы - лучший способ. Если вы обрабатываете более крупные файлы, вы заметите большую разницу в скорости. Это пример.
Выше всего содержимое этой статьи.