Java menggunakan aliran IO untuk mewujudkan segmentasi dan penggabungan file besar
Segmentasi file harus menjadi fungsi yang lebih praktis. Misalnya, jika Anda memiliki file 3G yang perlu disalin dari satu komputer ke komputer lainnya, tetapi perangkat penyimpanan Anda (seperti kartu SD) hanya 1G. Pada saat ini, Anda dapat memotong file menjadi 3 1G file, menyalinnya secara terpisah, dan akhirnya menggabungkan tiga file, yang memecahkan masalah. Misalnya, Anda memiliki file ratusan M untuk diunggah ke FTP, tetapi FTP ini membatasi file tunggal Anda tidak melebihi 10m. Saat ini, Anda juga dapat menggunakan segmentasi file untuk menyelesaikan masalah. Karena dibagi, kita perlu bergabung ketika kita menggunakannya lagi. Hari ini kami akan menerapkan kemampuan pemisahan file dan menggabungkan melalui kode Java.
Sekarang, kami akan menunjukkan dengan mendemonstrasikan file dari mesin saya. Direktori file adalah: e: /eclipse-jee-juno-win32.zip (hari ini saya akan bersenang-senang dengan gerhana yang dibenci semua orang):
Gambar berikut menunjukkan situasi sebelum segmentasi:
Situasi setelah divisi adalah:
Cara membagi file di java:
// Metode pemisahan file (lewati jalur file untuk dibagi dan jumlah salinan yang akan dibagi dalam metode) private static void splitFiledemo (file src, int m) {if (src.isfile ()) {// Dapatkan panjang total file long l = src.length (); // Dapatkan nama file string fileName = src.getName (). Substring (0, src.getName (). IndexOf (".")); // Dapatkan file suffix string endname = src.getName (). Substring (src.getName (). LastIndexof (".")); System.out.println (endname); Inputstream in = null; coba {in = new fileInputStream (src); untuk (int i = 1; i <= m; i ++) {StringBuffer SB = new StringBuffer (); SB.Append (src.getParent ()). Append (fileName) .Append ("_ Data"). Append (i) .Append (EndName); System.out.println (SB.ToString ()); File file2 = file baru (sb.toString ()); // Buat aliran output untuk menulis file outputStream out = new FileOutputStream (file2); int len = -1; byte [] bytes = byte baru [10*1024*1024]; while ((len = in.read (bytes))! =-1) {out.write (bytes, 0, len); if (file2.length ()> (l / m)) {break; }} out.close (); }} catch (Exception e) {e.printstacktrace (); } akhirnya {coba {in.close (); } catch (ioException e) {e.printstacktrace (); }}}} Java menggabungkan file:
// Metode penggabungan file (lulus di jalur file ke gabungan) void statis pribadi joinfiledemo (string ... src) {for (int i = 0; i <src.length; i ++) {file file = file baru (src [i]); String filename = file.getName (). Substring (0, file.getName (). IndexOf ("_")); String endname = file.getName (). Substring (file.getName (). LastIndexof (".")); StringBuffer SB = StringBuffer baru (); sb.append (file.getParent ()). append ("//"). append (fileName) .Append (endname); System.out.println (SB.ToString ()); coba {// Baca aliran input file inputStream file kecil di = new fileInputStream (file); // tulis aliran output file file besar file2 = file baru (sb.toString ()); OutputStream out = FileOutputStream baru (file2, true); int len = -1; byte [] bytes = byte baru [10*1024*1024]; while ((len = in.read (bytes))! =-1) {out.write (bytes, 0, len); } out.close (); melampirkan(); } catch (Exception e) {E.PrintStackTrace (); }} System.out.println ("Gabungan file selesai!");}Saya pikir itu cukup rumit sebelum menulis, tetapi setelah menulisnya, saya pikir hanya itu. Anda dapat melatih keterampilan Anda.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!