บทความนี้อธิบายถึงการตัดและการรวมการดำเนินงานของ Java เพื่อใช้ไฟล์ขนาดใหญ่ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ที่นี่เราตระหนักถึงการตัดและการรวมไฟล์ขนาดใหญ่
ตัดตามจำนวนที่ระบุ (เช่นการตัดไฟล์เป็น 10 สำเนา) หรือตัดตามขนาดที่ระบุ (เช่นจำนวนสูงสุดของแต่ละสำเนาไม่เกิน 10m) ทั้งสองวิธีก็โอเค
ที่นี่ฉันแค่เขียนรหัสง่าย ๆ ให้คุณ:
แพ็คเกจ IO2; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.fileoutputstream นำเข้า java.io.ioexception; นำเข้า Java.io.equenceinputstream; java.util.enumeration; นำเข้า Javax.swing.jfilechooser; คลาสสาธารณะ FilesplitDemo {/*** ตระหนักถึงการตัดและการรวมไฟล์ขนาดใหญ่ ตัดตามจำนวนที่ระบุ (เช่นการตัดไฟล์เป็น 10 สำเนา) หรือตัดตามขนาดที่ระบุ (เช่นจำนวนสูงสุดของแต่ละสำเนาไม่เกิน 10m) ทั้งสองวิธีก็โอเค */โมฆะคงที่สาธารณะหลัก (สตริง [] args) {jfilechooser jfc = ใหม่ jfilechooser (); // เลือกไฟล์ในสวิง // เลือกไฟล์ int result = jfc.showOpendialog (null); // เฟรมแสดงผลที่ใช้เพื่อเลือกไฟล์ไฟล์ไฟล์ = jfilechooser.approve_option) {// เลือกไฟล์ // ไฟล์ตัดไฟล์ = jfc.getSelectedFile (); // ผู้ใช้ที่เลือกไฟล์ dest = ไฟล์ใหม่ (file.getParent (), "splifile"); cutingfile (ไฟล์, dest); file.getName (); mergedemo (dest, filename); // merge file}} catch (ioexception e) {// todo todo ที่สร้างขึ้นอัตโนมัติ catch blocke.printstacktrace ();}} void mergedemo {โยน runtimeException ใหม่ ("ไฟล์ไม่มีอยู่");} // ใช้อาร์เรย์ไฟล์เพื่อโหลดไฟล์ทั้งหมดภายใน ส่วนไฟล์ [] = dest.listfiles (); // ส่งคืนอาร์เรย์ของชื่อพา ธ นามธรรมชื่อพา ธ เหล่านี้แสดงไฟล์ในไดเรกทอรีที่แสดงโดยชื่อพา ธ นามธรรมนี้ if (parth.length == 0) {โยน runtimeException ใหม่ ("ชิ้นส่วนไม่มีอยู่");} // y ใช้สตรีมลำดับเพื่อผสาน ArrayList <FileInputStream> list = new ArrayList <fileInputStream> (); // สำหรับ (int i = 0; FileInputStream (parth [i])); // นี่ไม่ใช่กรณีไฟล์ที่ผสานอยู่ในลำดับที่ไม่เป็นระเบียบ //} สำหรับ (int i = 0; i <partth.length; i ++) {list.add (FileInputStream ใหม่ (ไฟล์ใหม่ การแจงนับอินเตอร์เฟส <FileInputStream> en = collections.enumeration (รายการ); SequenceInputStream SQ = ใหม่ sequenceInputStream (en); // เขียนไปยังไฟล์ใหม่ไฟล์ fileOutputStream = ใหม่ fileOutputStream (ไฟล์ใหม่ (dest, filename)); byte buf [] = byte ใหม่ [1024]; sq.read (buf); int len = 0; len);} fou.close (); sq.close ();} โมฆะแบบคงที่ส่วนตัว cuttingFile (แหล่งที่มาไฟล์, ไฟล์ปลายทาง) {// ตัดลอง {fileInputStream fis = ใหม่ fileInputStream (แหล่งที่มา); if (! dest.exists ()) {// การดำเนินการไฟล์ iO dest.mkdir ();} byte buf [] = byte ใหม่ [1024 * 1024]; // 1mfis.read (buf); int len = 0; int cout = 1; ในขณะที่ (len = fis.read (buf))! = -1) {// ใช้สตรีม (cout ++)+"ส่วน")); fout.write (buf, 0, len); fout.close ();}} catch (filenotfoundexception e) {// todo ที่สร้างขึ้น auto-glocke.printstacktrace ();} catch (ioexception e) blocke.printstacktrace ();}}}การตัดไฟล์: ตัดไฟล์เป็นหลายชิ้นส่วนของชิ้นส่วนแต่ละชิ้นไม่ควรเกินขนาด 1 เมตร คุณสามารถขยายฟังก์ชั่นเพิ่มเติมได้: ชื่อไฟล์ความยาวก่อนตัดจำนวนชิ้นหลังจากตัดชื่อไฟล์และข้อมูลอื่น ๆ สามารถเขียนลงในชิ้นแรกหรือใช้คุณสมบัติเพื่อเขียนสิ่งเหล่านี้ลงในไฟล์การกำหนดค่า
File Merge: นี่คือข้อสันนิษฐานง่ายๆว่าชื่อของวัตถุไฟล์และไฟล์ต้นฉบับที่รวมกันเป็นที่รู้จัก ในความเป็นจริงสิ่งเหล่านี้สามารถมีชีวิตอยู่ได้อย่างสมบูรณ์ หากคุณบันทึกข้อมูลนี้ในไฟล์หรือไฟล์การกำหนดค่าที่แยกส่วนคุณยังสามารถใช้กล่องโต้ตอบการเลือกไฟล์เพื่ออ่านตัวเลือกของผู้ใช้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "บทสรุปของไฟล์ Java และทักษะการใช้งานไดเรกทอรี", "การสอนเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึมของ Java", "บทสรุปของทักษะการดำเนินงาน Java Dom Node"
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน