Java เปรียบเทียบ สอง ไฟล์ ไบนารี ตัวเลือก


1.7 ไบนารีไฟล์และบังคับเปรียบเทียบข้อความถ้า diff คิดว่าทั้งสองไฟล์ที่มีการเปรียบเทียบเป็นไบนารี (ไฟล์ที่ไม่ใช่ข้อความ) ปกติถือว่าคู่ของไฟล์มากเช่นถ้ารูปแบบผลลัพธ์สรุปได้รับการคัดเลือก (ดูบทสรุป) , และรายงานเท่านั้นที่แฟ้มไบนารีจะแตกต่างกัน เนื่องจากการเปรียบเทียบบรรทัดโดยบรรทัดมักไม่มีความหมายสำหรับไฟล์ไบนารี ปัญหานี้ไม่นับเป็นปัญหาแม้ว่าผลลัพธ์ที่ได้จะไม่สามารถจับความแตกต่างทั้งหมดได้ diff กำหนดว่าไฟล์เป็นข้อความหรือไบนารีโดยการตรวจสอบไบต์ไม่กี่ครั้งแรกในไฟล์จำนวนไบต์ที่แน่นอนขึ้นอยู่กับระบบ แต่โดยปกติจะมีหลายพัน ถ้าทุกไบต์ในส่วนของไฟล์นั้นไม่ใช่โมฆะ diff ถือว่าไฟล์เป็นข้อความมิฉะนั้นจะถือว่าไฟล์เป็นไบนารี บางครั้งคุณอาจต้องการบังคับ diff เพื่อพิจารณาไฟล์เป็นข้อความ ตัวอย่างเช่นคุณอาจจะเปรียบเทียบไฟล์ข้อความที่มีตัวอักษร null differ จะตัดสินผิดว่าเป็นไฟล์ที่ไม่ใช่ข้อความ หรือคุณอาจเปรียบเทียบเอกสารที่อยู่ในรูปแบบที่ใช้โดยระบบประมวลผลคำที่ใช้อักขระ null เพื่อระบุการจัดรูปแบบพิเศษ คุณสามารถบังคับ diff เพื่อพิจารณาไฟล์ทั้งหมดเป็นไฟล์ข้อความและเปรียบเทียบพวกเขาทีละบรรทัดโดยใช้ตัวเลือก --text (-a) ถ้าไฟล์ที่คุณเปรียบเทียบโดยใช้ตัวเลือกนี้ไม่ได้มีข้อความอยู่จริงอาจมีอักขระ newline ไม่กี่ตัวและผลลัพธ์ diff จะประกอบด้วยการแสดงความแตกต่างระหว่างเส้นยาวของอักขระที่มีอยู่ในไฟล์ นอกจากนี้คุณยังสามารถบังคับ diff เพื่อรายงานเฉพาะว่าไฟล์ต่างกัน (แต่ไม่ใช่วิธีการ) ใช้ตัวเลือก --brief (-q) สำหรับข้อมูลนี้ ในระบบปฏิบัติการที่แยกแยะระหว่างข้อความและไฟล์ไบนารี diff จะอ่านและเขียนข้อมูลทั้งหมดเป็นข้อความ ใช้ตัวเลือก - ไบนารีเพื่อบังคับให้ diff อ่านและเขียนข้อมูลไบนารีแทน ตัวเลือกนี้ไม่มีผลต่อระบบที่รองรับ POSIX เช่น GNU หรือ Unix แบบเดิม อย่างไรก็ตามระบบปฏิบัติการคอมพิวเตอร์ส่วนบุคคลจำนวนมากเป็นจุดสิ้นสุดของบรรทัดที่มีการส่งคืนสินค้าตามด้วยบรรทัดใหม่ ในระบบดังกล่าว diff มักจะละเว้นการรับส่งข้อมูลเหล่านี้เมื่อป้อนข้อมูลและสร้างข้อมูลเหล่านี้ที่จุดสิ้นสุดของบรรทัดเอาท์พุทแต่ละครั้ง แต่ด้วยตัวเลือกไบนารีตัวเลือกจะถือว่าการรับส่งข้อมูลกลับเป็นอักขระอินพุตเพียงตัวเดียวและไม่สร้างการรับส่งข้อมูลที่ ปลายสายออกแต่ละสาย นี้จะมีประโยชน์เมื่อจัดการกับไฟล์ที่ไม่ใช่ข้อความที่จะหมายถึงการแลกเปลี่ยนกับระบบ POSIX - เข้ากันได้ The - strip-trailing-cr ทำให้เกิดความแตกต่างในการรักษาบรรทัดอินพุตที่สิ้นสุดลงในการรับส่งของรถตามด้วยบรรทัดใหม่เหมือนกับว่าจะลงท้ายด้วยบรรทัดใหม่ที่ลัด นี้จะมีประโยชน์เมื่อเปรียบเทียบข้อความที่ไม่ถูกต้องนำเข้าจากระบบปฏิบัติการคอมพิวเตอร์ส่วนบุคคลจำนวนมาก ตัวเลือกนี้มีผลกับการอ่านบรรทัดซึ่งจะส่งผลกระทบต่อวิธีเปรียบเทียบและส่งออก ถ้าคุณต้องการเปรียบเทียบไบต์สองไฟล์โดยไบต์คุณสามารถใช้โปรแกรม cmp ด้วยตัวเลือก - verbose (-l) เพื่อแสดงค่าของไบต์ที่แตกต่างกันในไฟล์สองไฟล์ มี GNU cmp นอกจากนี้คุณยังสามารถใช้ตัวเลือก - b หรือ --print-bytes เพื่อแสดงการแสดง ASCII ของไบต์เหล่านั้น ดูการเรียกใช้ cmp สำหรับข้อมูลเพิ่มเติม. ถ้า diff3 คิดว่าไฟล์ใด ๆ ที่มีการเปรียบเทียบคือไบนารี (ไฟล์ที่ไม่ใช่ข้อความ) ปกติรายงานข้อผิดพลาดเนื่องจากการเปรียบเทียบดังกล่าวมักไม่เป็นประโยชน์ diff3 ใช้การทดสอบเดียวกันกับ diff เพื่อตัดสินใจว่าไฟล์เป็นไบนารีหรือไม่ เช่นเดียวกับ diff ถ้าไฟล์ใส่มีไบต์ที่ไม่ใช่ข้อความเพียงไม่กี่ตัว แต่อย่างอื่นเป็นเหมือนไฟล์ข้อความคุณสามารถบังคับ diff3 เพื่อพิจารณาไฟล์ทั้งหมดเป็นไฟล์ข้อความและเปรียบเทียบบรรทัดทีละบรรทัดโดยใช้ตัวเลือก - a หรือ - text หน้า man สำหรับ cmp โดยเฉพาะกล่าวว่าจะไบต์โดยการเปรียบเทียบไบต์เพื่อให้เป็นค่าเริ่มต้นของฉันสำหรับ 2 ไฟล์ไบนารี diff คือบรรทัดโดยบรรทัดและจะให้คำตอบ YesNo เดียวกัน แต่แน่นอนว่าไม่ใช่การถ่ายโอนข้อมูลแบบเดียวกันกับสตรีมมาตรฐาน ถ้าเส้นยาวเพราะบางทีพวกเขาไม่ได้ไฟล์ข้อความแล้วฉันต้องการ cmp diff มีข้อได้เปรียบที่คุณสามารถระบุการเปรียบเทียบของไดเร็กทอรีและ - r สำหรับ recursion โดยเปรียบเทียบไฟล์หลายไฟล์ในคำสั่งเดียว ndash H2ONaCl ธันวาคม 24 16 ที่ 8:07 diff unix มาตรฐานจะแสดงว่าไฟล์เหมือนกันหรือไม่ #: 31567 unix diff มาตรฐานจะแสดงว่าไฟล์เหมือนหรือไม่ 7 15 ที่ 14:45 ที่ถูกต้อง - ไม่มีผลลัพธ์หมายถึงพวกเขาเหมือนกัน ndash JWDN 3 สิงหาคมที่ 13:37 diff ดูเหมือนจะมีปัญหากับไฟล์ขนาดใหญ่จริงๆ ฉันมีความแตกต่าง: หน่วยความจำหมดเมื่อเปรียบเทียบไฟล์ 13G ndash Yongwei Wu วันพุธที่ 28 กันยายน 16 เวลา 8:45 ผลลัพธ์ที่น่าสนใจ diff บอกคุณว่าพวกเขาเป็นคนแปลกหน้า เนื่องจากไฟล์ทั้งหมดถือได้ว่าเป็นไบนารีที่มีการยืนยันแปลก ๆ ndash H2ONaCl Dec 24 16 at 8:13 คุณช่วยอธิบายลงคะแนนโปรด SHA1 มี 4 upvotes และหาก OP คิดว่ามีโอกาสทั้งสองไฟล์อาจจะเหมือนกันหรือคล้ายกันโอกาสของการชนกันเล็กน้อยและไม่สมควร. MD5 ลงคะแนน แต่เพิ่ม SHA1 การลงทะเบียนอื่น ๆ เนื่องจากคุณได้ยินว่าคุณควร hash รหัสผ่านของคุณด้วย SHA1 แทน MD5 (ที่เป็นปัญหาที่แตกต่างกัน) คุณไม่แน่ใจเกี่ยวกับเหตุผล แต่ cmp บริสุทธิ์จะมีประสิทธิภาพมากกว่าการคำนวณฟังก์ชันแฮชใด ๆ ของไฟล์และเปรียบเทียบไฟล์เหล่านั้น (อย่างน้อยสำหรับไฟล์เพียง 2 ไฟล์) ndash orian 26 เม. ย. 26 เวลา 13: 58 วิธีการ เปรียบเทียบไฟล์ไบนารีคำอธิบายกวดวิชา: บทแนะนำนี้จะอธิบายวิธีเปรียบเทียบไฟล์ไบนารีและกล่าวถึงตัวเลือกการเปรียบเทียบไฟล์ไบนารีต่างๆ เปิด ExamDiff Pro และเลือกตัวเลือก Files ในกรอบโต้ตอบ Compare จากนั้นเลือกไฟล์สองไบนารีเพื่อเปรียบเทียบเช่นสอง DLLs โดยค่าเริ่มต้น ExamDiff Pro จะกำหนดว่าไฟล์เป็นข้อความหรือไบนารีโดยอัตโนมัติ โปรแกรมสามารถรับรู้แฟ้มข้อความที่เข้ารหัสในรูปแบบ ASCII (ANSI), UTF-8 และ UTF-16 (ทั้งรูปแบบขนาดเล็กและใหญ่) โดยอัตโนมัติ (ไฟล์ UTF-16 จะถูกตรวจจับโดยเครื่องหมายสั่งแบบไบต์ - 0xFFFE สำหรับผู้ใช้งานขั้นต่ำและ 0xFEFF สำหรับ endian ใหญ่) หากไม่พบการเข้ารหัสทั้งสี่แบบนี้ ExamDiff Pro จะถือว่าไฟล์เป็นไฟล์ไบนารี หรือคุณสามารถเลือก Treat files text เป็น binary ใน Options Compare เปรียบเทียบคลิกที่ คุณจะได้รับข้อความคล้ายกับข้อความต่อไปนี้: ตอนนี้คลิก Show Details (แสดงรายละเอียด) ลองใช้ตัวเลือกการเปรียบเทียบแบบไบนารี กด Ctrl-J หรือคลิกที่ปุ่มแถบเครื่องมือตัวเลือกเพื่อเปิดกล่องโต้ตอบตัวเลือกและไปที่หน้าเปรียบเทียบ Dir ตัวเลือกแรกที่เราจะตรวจสอบคือขนาดบล็อกเปรียบเทียบ โดยค่าเริ่มต้นค่านี้จะตั้งเป็น 1 ไบต์ซึ่งให้การเปรียบเทียบไบนารีที่แม่นยำที่สุด อย่างไรก็ตามสำหรับการเปรียบเทียบไฟล์ขนาดใหญ่อาจต้องใช้เวลานานมากจึงทำให้เสียเวลาในการเสียสละบางอย่างเพื่อประสิทธิภาพที่ดีขึ้น ให้เปลี่ยนเป็น 2 ไบต์: คุณสามารถเห็นได้ว่าเราได้รับรายงานการเปรียบเทียบที่มีรายละเอียดน้อยลง (เช่นจำนวนความแตกต่างคือ 910 เทียบกับ 1526 เมื่อเราใช้บล็อก 1 ไบต์) แต่ผลลัพธ์นี้ทำได้เร็วกว่าคำหลักแรก ตัวเลือกถัดไปจำนวนไบต์ต่อบรรทัด รูปแบบไบต์ ชุดตัวอักษร . และภายนอกแก้ไขเป็นตัวอธิบายและเอกสารที่ดีใน Help. One ออนไลน์สิ่งอื่น ๆ : ถ้าหลังจากเปรียบเทียบสองไฟล์ข้อความที่คุณต้องการดูผลการเปรียบเทียบไบนารีของพวกเขาคุณสามารถใช้คำสั่ง Files Toggle TextBinary เปรียบเทียบเมนู หรือปุ่มแถบเครื่องมือ Toggle TextBinary Comparison (ถ้าคุณไม่พบปุ่มแถบเครื่องมือ Toggle TextBinary Comparison บนแถบเครื่องมือ ExamDiff Pro ของคุณคุณอาจต้องปรับแต่งแถบเครื่องมือของคุณดังที่แสดงใน Basic Tutorial 2 ขั้นตอนที่ 6) ลิขสิทธิ์สำเนา 1997-2017 PrestoSoft LLC สงวนลิขสิทธิ์.

Comments