मैं यह पता लगाने के लिए एक कुशल तरीका ढूंढ रहा हूं कि दो java.io.File
एक ही भौतिक फ़ाइल का संदर्भ लें। दिए गए वस्तु के साथ समानता के लिएजावा, लिनक्स: यह पता लगाने के लिए कि क्या दो java.io.Files एक ही भौतिक फ़ाइल को संदर्भित करते हैं
हालांकिटेस्ट इस सार पथ नाम: डॉक्स के अनुसार,
File.equals()
काम करना चाहिए। सत्य लौटाता है अगर केवल तर्क शून्य नहीं है और अमूर्त पथनाम है जो को इस फ़ाइल या निर्देशिका को सार पथनाम के रूप में दर्शाता है।
, एक FAT32 विभाजन (वास्तव में एक TrueCrypt कंटेनर), जिस पर/मीडिया/truecrypt1 घुड़सवार दिया:
new File("/media/truecrypt1/File").equals(new File("/media/truecrypt1/file")) == false
क्या आप कहेंगे कि इस विनिर्देशों के अनुरूप? और इस मामले में, उस समस्या के आसपास कैसे काम करें?
अपडेट: जावा 7 के लिए टिप्पणी करने वालों के लिए धन्यवाद, मुझे java.io.Files.isSameFile()
मिल गया है जो मेरे लिए काम करता है।
मुझे यकीन नहीं है (यही कारण है कि मैं इसे एक टिप्पणी के रूप में पोस्ट करता हूं), लेकिन शायद ['getCanonicalFile()'] (http://download.oracle.com/javase/6/docs/api/java/io /File.html#getCanonicalFile()) मदद करता है। –
यूनिक्स पर, ये फ़ाइलें समान नहीं हैं। ;) –
@ पीटर: सामान्य रूप से नहीं, लेकिन यदि '/ media/truecrypt1' एक एफएटी फाइल सिस्टम है, तो वे (डिफ़ॉल्ट माउंट विकल्प दिए गए) सटीक उसी सामग्री का संदर्भ लेंगे। –