है या नहीं, मैं यह जांचना चाहता हूं कि कोई मौजूदा फ़ाइल किसी विशिष्ट निर्देशिका में है या उसके उपनिर्देशिका में है या नहीं।जांचें कि फ़ाइल (उप) निर्देशिका
मेरे पास दो फ़ाइल ऑब्जेक्ट्स हैं।
File dir;
File file;
दोनों का अस्तित्व की गारंटी है।
String canonicalDir = dir.getCanonicalPath() + File.separator;
boolean subdir = file.getCanonicalPath().startsWith(canonicalDir);
यह मेरी सीमित परीक्षण के साथ काम करने लगता है, लेकिन मैं अनिश्चित हूं: मान लेते हैं
dir = /tmp/dir
file = /tmp/dir/subdir1/subdir2/file.txt
मैं इस चेक सच
वापस जाने के लिए अब मैं जांच इस तरह से कर रहा हूँ के लिए चाहते हैं क्या यह कुछ ऑपरेटिंग सिस्टम पर समस्याएं पैदा कर सकता है। मुझे यह भी पसंद नहीं है कि कैनोनिकलपाथ() एक IOException फेंक सकता है जिसे मुझे संभालना है।
क्या कोई बेहतर तरीका है? शायद कुछ पुस्तकालय में?
धन्यवाद
यह उन पथों के लिए समस्याग्रस्त हो सकता है जिनमें "/tmp/something/../dir" जैसी सामग्री शामिल है जो मेरे आवेदन में संभव है। –
आप आसानी से 'child.getAbsolutePath() शुरू कर सकते हैं। शुरू होता है (parent.getAbsolutePath()) 'अगर ऐसा है। – rocketboy
वास्तव में getAbsolutePath() सभी ऐसे '/../' टोकन की गणना करेगा और फ़ाइल सिस्टम में वास्तविक पूर्ण पथ लौटाएगा। –