मैंने सोचा कि मैं इस मुद्दे से निपटने में कुछ अच्छा भाग्य साझा करूंगा। मैं जेडीके 1.6.0_23 का उपयोग कर रहा हूं और इसलिए मुझे एनआईओ 2 से लाभ नहीं हो सकता है। मैं विंडोज 7/x64 पर केवल निर्माण और चल रहा हूं इसलिए अन्य वातावरण में माइलेज भिन्न हो सकता है। दुर्भाग्यवश, यहां अन्य समाधान एक जंक्शन को पार करने का प्रयास करते समय नलपॉन्टर अपवादों से बचने के लिए मेरे लिए काम नहीं करते थे (शायद क्योंकि जंक्शन! = Symlink ....)। जबकि मैं जेडीके संस्करण से बाध्य नहीं हूं, मैंने थोड़ी देर के लिए समस्या को रखने का फैसला किया।
मेरे पास यह कोड था जो एक प्रतीकात्मक लिंक पर या 'सिस्टम वॉल्यूम सूचना' निर्देशिका का सामना करते समय एक NullPointerException का कारण बनता है। (ध्यान दें, traverseItem.f() प्रकार java.io.File की एक वस्तु देता है)
if (traverseItem.f().isDirectory) {
for (File item : traverseItem.f().listFiles()) {
इसलिए, यह माना जाता है कि एक निर्देशिका है, लेकिन listFiles() उस पर बुला एक एनपीई कारण बनता है। क्या करें? मैंने सूची() विधि पर जासूसी की और आश्चर्य किया कि क्या यह वही व्यवहार प्रदर्शित करेगा।मैंने जो खोजा वह निम्नलिखित था:
एक खाली फ़ोल्डर का वर्णन करने वाली फ़ाइल पर कॉलिंग सूची() लंबाई की एक स्ट्रिंग [] सरणी शून्य प्रदान करती है। हालांकि, एक फ़ाइल एक जंक्शन का वर्णन पर सूची() जो अन्यथा listFiles से दुर्घटना होगा() कॉल रिटर्न अशक्त
मैं listFiles()
String[] contents = traverseItem.f().list();
if (contents != null) { //Non-traversible if null, possibly junction or ???
कॉल करने से पहले निम्न परीक्षण जोड़कर NullPointerExceptions से बचने के लिए कर रहा था यह जंक्शन, प्रतीकात्मक लिंक, हार्ड लिंक के सभी मामलों का पूरी तरह से परीक्षण करने के लिए बनी हुई है, और मैं इसका उल्लेख करता हूं, शॉर्टकट, लेकिन इससे कुछ मदद मिल सकती है।
http://stackoverflow.com/questions/2175673/java-check-symbolic-link-file-existence – Gray
जावा 1.7: [java.nio.Files.isSymbolicLink (पथ)] से संबंधित (http: // docs .oracle.com/javase/7/docs/api/java/nio/file/files.html # isSymbolicLink% 28java.nio.file.Path% 29) - मेरे लिए एक नोट - मैं यहां वापस समाप्त रहता हूं! –