Java ใช้ IO Stream เพื่อตระหนักถึงการแบ่งส่วนและการรวมไฟล์ขนาดใหญ่
การแบ่งส่วนไฟล์ควรเป็นฟังก์ชั่นที่ใช้งานได้จริงมากขึ้น ตัวอย่างเช่นหากคุณมีไฟล์ 3G ที่ต้องคัดลอกจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง แต่อุปกรณ์จัดเก็บข้อมูลของคุณ (เช่นการ์ด SD) เพียง 1G ในเวลานี้คุณสามารถตัดไฟล์เป็น 3 1G ไฟล์คัดลอกแยกกันและในที่สุดก็รวมไฟล์สามไฟล์ซึ่งแก้ปัญหาได้ ตัวอย่างเช่นคุณมีไฟล์หลายร้อย m เพื่ออัปโหลดไปยัง FTP แต่ FTP นี้ จำกัด ไฟล์เดียวของคุณให้ไม่เกิน 10m ในเวลานี้คุณยังสามารถใช้การแบ่งส่วนไฟล์เพื่อแก้ปัญหา เนื่องจากมันถูกแบ่งออกเราจึงต้องรวมกันเมื่อเราใช้มันอีกครั้ง วันนี้เราจะใช้ความสามารถในการแยกไฟล์และการรวมผ่านรหัส Java
ตอนนี้เราจะสาธิตโดยแสดงไฟล์จากเครื่องของฉัน ไดเรกทอรีไฟล์คือ: e: /eclipse-jee-juno-win32.zip (วันนี้ฉันจะสนุกกับคราสที่ทุกคนเกลียด):
รูปต่อไปนี้แสดงสถานการณ์ก่อนการแบ่งส่วน:
สถานการณ์หลังจากการแบ่งคือ:
วิธีแยกไฟล์ใน Java:
// วิธีการแยกไฟล์ (ผ่านเส้นทางไฟล์ที่จะแยกและจำนวนสำเนาที่จะแยกในวิธีการ) โมฆะแบบคงที่แบบคงที่ private splitfiledemo (ไฟล์ src, int m) {ถ้า (src.isfile ()) {// รับความยาวรวมของไฟล์ยาว l = src.length (); // รับไฟล์สตริงชื่อไฟล์ = src.getName (). Substring (0, src.getName (). indexof (".")); // รับสตริงเสริมไฟล์ endname = src.getName (). substring (src.getName (). lastIndexof (".")); System.out.println (endname); inputStream ใน = null; ลอง {in = new FileInputStream (SRC); สำหรับ (int i = 1; i <= m; i ++) {stringbuffer sb = new StringBuffer (); sb.append (src.getParent ()). ต่อไป (ชื่อไฟล์) .append ("_ data"). ผนวก (i) .append (endname); System.out.println (sb.toString ()); ไฟล์ file2 = ไฟล์ใหม่ (sb.toString ()); // สร้างสตรีมเอาต์พุตสำหรับการเขียนไฟล์ outputStream out = ใหม่ fileOutputStream (file2); int len = -1; ไบต์ [] ไบต์ = ไบต์ใหม่ [10*1024*1024]; ในขณะที่ ((len = in.read (bytes))! =-1) {out.write (ไบต์, 0, len); if (file2.length ()> (l / m)) {break; }} out.close (); }} catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {in.close (); } catch (ioexception e) {e.printstacktrace (); - ไฟล์ Java Merge:
// วิธีการรวมไฟล์ (ผ่านในเส้นทางไฟล์เพื่อผสาน) โมฆะคงที่ส่วนตัว joinfiledemo (สตริง ... src) {สำหรับ (int i = 0; i <src.length; i ++) {ไฟล์ไฟล์ = ไฟล์ใหม่ (src [i]); String filename = file.getName (). substring (0, file.getName (). indexof ("_")); สตริง endname = file.getName (). substring (file.getName (). lastIndexof (".")); StringBuffer sb = new StringBuffer (); sb.append (file.getParent ()). ผนวก ("//") ผนวก (ชื่อไฟล์) .append (endname); System.out.println (sb.toString ()); ลอง {// อ่านอินพุตสตรีมของไฟล์ขนาดเล็ก inputStream ใน = ใหม่ fileInputStream (ไฟล์); // เขียนกระแสเอาต์พุตของไฟล์ไฟล์ขนาดใหญ่ไฟล์ 2 = ไฟล์ใหม่ (sb.toString ()); outputStream out = new fileOutputStream (file2, true); int len = -1; ไบต์ [] ไบต์ = ไบต์ใหม่ [10*1024*1024]; ในขณะที่ ((len = in.read (bytes))! =-1) {out.write (ไบต์, 0, len); } out.close (); in.close (); } catch (exception e) {e.printstacktrace (); }} system.out.println ("การผสานไฟล์เสร็จสมบูรณ์!");}ฉันคิดว่ามันค่อนข้างซับซ้อนก่อนที่จะเขียน แต่หลังจากเขียนมันฉันคิดว่ามันเป็นแค่นั้น คุณสามารถฝึกฝนทักษะของคุณ
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!