Artikel ini menjelaskan operasi pemotongan dan penggabungan Java untuk mengimplementasikan file besar. Bagikan untuk referensi Anda, sebagai berikut:
Di sini kami menyadari pemotongan dan penggabungan file besar.
Dipotong dengan nomor yang ditentukan (seperti memotong file menjadi 10 salinan) atau dipotong dengan ukuran yang ditentukan (seperti jumlah maksimum setiap salinan tidak melebihi 10m). Kedua metode itu ok.
Di sini saya hanya menulis beberapa kode sederhana untuk Anda:
Paket IO2; Impor java.io.file; impor java.io.fileinputstream; impor java.io.filenotfoundException; impor java.io.fileOutputStream; impor java.io.ioException; impor java.setenceInputstream; impor java.ravaLectil; navaLists; Impor Java. java.util.enumeration; import javax.swing.jfilechooser; public class FileSplitDemo {/*** Sadarilah pemotongan dan penggabungan file besar. Dipotong dengan nomor yang ditentukan (seperti memotong file menjadi 10 salinan) atau dipotong dengan ukuran yang ditentukan (seperti jumlah maksimum setiap salinan tidak melebihi 10m). Kedua metode itu ok. */public static void main (string [] args) {jfilechooser jfc = new jfilechooser (); // pilih file dalam ayunan // pilih file int result = jfc.showopendialog (null); // bingkai tampilan digunakan untuk memilih file file = null; // file untuk dipotong file dest = null = null; Jfilechooser.approve_option) {// pilih file // potong file file = jfc.getSelectedFile (); // pengguna yang dipilih file dest = file baru (file.getParent (), "splifile"); cutingfile (file, dest); // cut Metode // 2 merge (ketika berjalan, secara langsung menggabungkan fragmen (file, dest); // cut Metode // 2 merge (saat berjalan, secara langsung menggabungkan fragmen (file, dest); file.getName();mergeDemo(dest, fileName);// Merge file}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void mergeDemo(File dest, String fileName)throws IOException {// Robustness protection (using File object to open the channel) if (! Dest.exists ()) {throw runimeException baru ("File tidak ada");} // Gunakan array file untuk memuat semua file di dalamnya. File Part [] = Dest.ListFiles (); // Mengembalikan array pathnames abstrak, nama -nama path ini mewakili file dalam direktori yang diwakili oleh pathname abstrak ini. if (Parth.length == 0) {lempar runtimeException baru ("fragmen tidak ada");} // y Gunakan aliran urutan untuk menggabungkan arraylist <fileInputStream> list = new arraylist <filinputStream> ();/ untuk (int i = 0; i <parth.length; i +++) () () (int i = 0; i <parth.length; i ++) {i+++) {i+) {i+) {i+) { FileInputStream (Parth [i])); // Ini bukan masalahnya, file yang digabungkan dalam urutan yang tidak teratur //} untuk (int i = 0; i <partth.length; i ++) {list.add (FileInputStream baru (file dest, filene+ (i+ 1)+ "parseuming (everation everon, the order, the order, the order, the order, the order, the order, the order, the order new (i+ 1)); enumerasi antarmuka objek <FILEInputStream> en = collections.enumeration (daftar); SequenceInputStream sq = New SequenceInputStream (en); // Tulis ke file baru fileOutputStream fou = fileOutputStream baru (file baru (dest, nama file)); byte buf [] = byte baru [1024]; sq.read (Buf); int len = 0; while ((len = sq. len);} fou.close (); sq.close ();} private static void cuttingfile (sumber file, file dest) {// potong cobalah {fileInputStream fis = fileinputStream baru (sumber); if (! dest.exists ()) {// file operasi io stream untuk menentukan apakah file. dest.mkdir ();} byte buf [] = byte baru [1024 * 1024]; // 1mfis.read (buf); int len = 0; int cout = 1; while ((len = fis.read (buf))! = -1) {// gunakan aliran keluar untuk memotong file outputStream (BUF))! = (cout ++)+"bagian")); fout.write (buf, 0, len); fout.close ();}} catch (FileNotFoundException e) {// TODO Auto-generated Catch blocke.printstacktrace ();} Catch (ioEkception E) {// TOGODOCE (); blocke.printstacktrace ();}}}Pemotongan File: Potong file menjadi beberapa bagian, masing -masing bagian dari fragmen tidak boleh melebihi ukuran 1m. Anda dapat memperluas fungsi lebih lanjut: nama file, panjang sebelum memotong, jumlah potongan setelah pemotongan, nama file dan informasi lainnya dapat ditulis ke bagian pertama atau menggunakan properti untuk menulis ini ke file konfigurasi.
Gabungan File: Berikut ini adalah asumsi sederhana bahwa nama objek file dan file asli yang digabungkan diketahui. Bahkan, ini bisa benar -benar hidup. Jika Anda menyimpan informasi ini dalam file atau file konfigurasi yang terfragmentasi, Anda juga dapat menggunakan kotak dialog pemilihan file untuk membaca pilihan pengguna.
Untuk informasi lebih lanjut tentang algoritma Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Ringkasan File Java dan Keterampilan Operasi Direktori", "Tutorial tentang Struktur Data Java dan Algoritma", "Ringkasan Keterampilan Operasi Java Dom" dan "Ringkasan Keterampilan Operasi Java Cache"
Saya harap artikel ini akan membantu pemrograman Java semua orang.