Files.mismatch()
দুটি ফাইলকে মেমরিতে লোড না করেই দক্ষতার সাথে তুলনা করুন।
কোড তুলনা
✕ Java 8
// Compare two files byte by byte byte[] f1 = Files.readAllBytes(path1); byte[] f2 = Files.readAllBytes(path2); boolean equal = Arrays.equals(f1, f2); // loads both files entirely into memory
✓ Java 12+
long pos = Files.mismatch(path1, path2); // -1 if identical // otherwise: position of first difference
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
মেমরি-এফিশিয়েন্ট (Memory-efficient)
এটি সম্পূর্ণ ফাইলকে বাইট অ্যারেতে লোড করে না।
পার্থক্য চিহ্নিত করে
প্রথম অমিলের সঠিক বাইট পজিশন রিটার্ন করে।
এক কল
কোনো ম্যানুয়াল বাইট অ্যারে কম্পেয়ার লজিকের প্রয়োজন নেই।
পুরনো পদ্ধতি
ম্যানুয়াল বাইট কম্পেয়ার
আধুনিক পদ্ধতি
Files.mismatch()
JDK থেকে
12
কঠিনতা
প্রাথমিক
JDK সমর্থন
Files.mismatch()
উপলব্ধ
JDK 12 (মার্চ 2019) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
Files.mismatch() মেথডটি প্রথম ভিন্ন বাইটের পজিশন রিটার্ন করে, অথবা ফাইলগুলো অভিন্ন হলে -1 রিটার্ন করে। এটি লেজি রিড (lazy read) করে এবং প্রথম পার্থক্যে শর্ট-সার্কিট (short-circuits) করে।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ