Meskipun Java menyediakan kelas operasi IO yang dapat memproses file, tidak ada metode untuk menyalin file. Salin file adalah operasi penting. Namun, ada beberapa metode yang dapat direplikasi dengan file Java, dan metode paling populer dalam 4 tercantum di bawah ini.
1. Salin dengan filestreams
Ini adalah cara paling klasik untuk menyalin konten satu file ke file lain. Baca byte file A menggunakan fileInputStream, dan tulis ke file B dengan FileOutputStream. Ini adalah kode metode pertama:
Private Void CopyFileUsingFileStreams (Sumber File, File Dest) Melemparkan IOException {InputStream Input = NULL; [1024];
Saat Anda melihat beberapa data operasi membaca dan menulis, ini harus menjadi efisiensi rendah.
2. Gunakan FileChannel untuk menyalin
Java Nio menyertakan metode TransferFrom, yang seharusnya lebih cepat dari salinan aliran file sesuai dengan dokumen. Ini adalah kode metode kedua:
Private void copyFileUsingFileChannels (Sumber File, File Dest) Melemparkan IoException {FileChannel InputChannel = NULL; , Inputchannel.size ());} akhirnya {inputchannel.close ();
3. Gunakan commons io untuk menyalin
Apache Commons IO menyediakan metode file salin di kelas Fileutils -nya, yang dapat digunakan untuk menyalin satu file ke tempat lain. Sangat nyaman bagi Anda untuk menggunakan proyek Anda saat menggunakan kelas Apache Commons Fileutils. Pada dasarnya, kelas ini menggunakan java nio filechannel. Ini adalah kode metode ketiga:
Private static void copyFileUsingAnpachecommonsio (sumber file, file dest) melempar ioException {fileutils.copyfile (sumber, dest);}
4. Salin dengan kelas file java7
Jika Anda memiliki beberapa pengalaman di Java 7, Anda mungkin tahu bahwa Anda dapat menggunakan metode salin file file untuk disalin dari satu file ke file lain. Ini adalah kode metode keempat:
Private static void copyFileUsingJava7Files (sumber file, file dest) melempar ioException {file.copy (source.topath (), dest.topath ());}
5. Tes
Sekarang lihat salah satu dari metode ini yang lebih efisien, kami akan menyalin file besar untuk menggunakan setiap program sederhana. Dari cache untuk menghindari kinerja apa pun, kami jelas akan menggunakan empat file sumber yang berbeda dan empat file target yang berbeda. Mari kita lihat kode:
Impor Java.io.file; .nio.file.file; /nikos7//desktop/files/sourcefile1.txt "); file dest = file baru (" c: //users/nikos7//desktop/files/destfile1.txt ") menyalin file menggunakan file long start = System.nanoTime ( ); = File baru ("c: //users/nikos7//desktop/files//sourcefile2.txt"); Sumber, DEST); //Users//nikos7//desktop//sourcefile3.txt "); dest = file baru (" c: //users//nikos7//desktop/files/destfile3.txt "); start = system.nanoTime () ; //File//sourceFile4.txt "); dest = file baru (" c: //users/nikos7//desktop/files/destfile4.txt "); start = system.nanoTime (); sio (sumber, destry) ; NULL; Write (buf, 0, bytesread);}} akhirnya {input.close (); NULL; {inputchannel.close (); , File dest) melempar ioException {fileutils.copyfile (sumber, dest);}}}
Keluaran:
Waktu diambil oleh filestreams salinan = 127572360 waktu diambil oleh filechannels copy = 10449963 waktu diambil oleh file java7 salinan = 10808333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
Sama seperti Anda dapat melihat filechannels menyalin file besar adalah cara terbaik. Jika Anda menangani file yang lebih besar, Anda akan melihat perbedaan kecepatan yang lebih besar. Ini adalah contohnya.
Di atas adalah semua isi artikel ini.