2011-09-02 17 views
8

मैं "MYFOLDER" जैसी कुछ विशेष निर्देशिकाओं को खोजने के लिए "/" से शुरू होने वाली सभी निर्देशिका स्कैन कर रहा हूं। हालांकि, फ़ोल्डर यह है कि मुझे एक ही फ़ोल्डर के दोहरे उदाहरण मिलते हैं। ऐसा इसलिए होता है क्योंकि एक फ़ोल्डर "/ mnt/sdcard/MYFOLDER" में स्थित होता है और उसी फ़ोल्डर में "/ sdcard/MYFOLDER" में एक प्रतीकात्मक लिंक होता है ..एंड्रॉइड: एक प्रतीकात्मक लिंक निर्धारित करना

मेरा प्रश्न है, "क्या यह निर्धारित करने का कोई तरीका है कि क्या फ़ोल्डर एक प्रतीकात्मक लिंक है या नहीं? "। मुझे कुछ सुझाव दे ..

+0

आप हमें कोड दिखा सकते हैं? –

+0

आप यहां देख सकते हैं: http://stackoverflow.com/questions/813710/java-1-6-determine-symbolic-links। यह आपकी मदद कर सकता है! –

+0

महोदय, कोड के बारे में कुछ भी विशिष्ट नहीं है .. मेरे पास एक बहुत ही सरल सवाल है। आप listFiles() फ़ंक्शन का उपयोग करके निर्देशिका स्कैन करते हैं। हालांकि, एक ही नाम i.e.,/mnt/scard और/sdcard के साथ दो निर्देशिकाएं हैं। एक दूसरे के लिए प्रतीकात्मक लिंक है। मैं सिर्फ यह जानना चाहता हूं कि इन दोनों के बीच अंतर करने का कोई तरीका है .. क्या यह जानने का कोई तरीका है कि फ़ोल्डर एक प्रतीकात्मक लिंक है .. आपको बहुत धन्यवाद – Farhan

उत्तर

13

कैसे वे (their license के अधीन) Apache Commons में क्या यह अनिवार्य रूप से है:

public static boolean isSymlink(File file) throws IOException { 
    File canon; 
    if (file.getParent() == null) { 
    canon = file; 
    } else { 
    File canonDir = file.getParentFile().getCanonicalFile(); 
    canon = new File(canonDir, file.getName()); 
    } 
    return !canon.getCanonicalFile().equals(canon.getAbsoluteFile()); 
} 

संपादित @LarsH टिप्पणी के लिए धन्यवाद। उपरोक्त कोड केवल जांचता है कि क्या बच्चों की फाइल एक सिमलिंक है या नहीं।

आदेश ओपी सवाल का जवाब देने में, यह और भी आसान है:

public static boolean containsSymlink(File file) { 
    return file.getCanonicalFile().equals(file.getAbsoluteFile()); 
} 
+0

एक उपयोगी उत्तर, +1। कोई विचार क्यों वे एक मूल फ़ाइल की जांच करते हैं और हमेशा कैनन = फ़ाइल का उपयोग करने के बजाय माता-पिता के getCanonicalFile() का उपयोग करते हैं? क्या इसे "यदि पथ तत्व मौजूद नहीं है (या खोजने योग्य नहीं है) के साथ ऐसा करना है, तो पाठकीय संचालन के रूप में कैनोनिकलकरण को समझने के बीच एक संघर्ष होता है (जहां" ए /../बी "" बी "है, भले ही" ए " " अस्तित्व में नहीं है) ।"? – LarsH

+1

ओह, मुझे यह मिल गया है ... यह केवल यह निर्धारित करना है कि 'फ़ाइल' पथ में * अंतिम घटक * एक प्रतीकात्मक लिंक है ... नहीं कि फ़ाइल के पथ में * कोई घटक * एक प्रतीकात्मक लिंक है या नहीं। मुझे लगता है कि ओपी के मामले में, हम बाद वाले को चाहते हैं, इस मामले में हम इस समारोह के 'अन्य' खंड को छोड़ देंगे। – LarsH

+1

@ लार्सह अच्छा बिंदु! मैंने जवाब संपादित कर लिया है। – rds

संबंधित मुद्दे