2009-12-10 10 views
13

जिस एप्लिकेशन पर मैं काम कर रहा हूं जिसमें नेटवर्क फ़ाइल शेयरों पर फ़ाइलों तक पहुंच शामिल है, और हम फाइलों के स्थानों को निर्दिष्ट करने के लिए यूआरआई का उपयोग कर रहे हैं।फ़ाइल: यूआरआई और स्लेश

फ़ाइल की मेरी समझ: यूआरआई यह है कि उन्हें file:// + पथ का रूप लेना चाहिए। विंडोज नेटवर्क शेयर के मामले में, यह पथ \\servername\dir\file जैसा दिखता है, इसलिए परिणामी यूआरआई file:////servername/dir/file बन जाता है।

यह जावा के URI class के लिए बहुत अच्छा काम कर रहा है, लेकिन Win32 एपीआई file://servername/dir/file शैली यूआरआई चाहता है, जिसे जावा अस्वीकार करता है क्योंकि यह "एक प्राधिकरण घटक है"।

क्या मैं नेटवर्क-शेयर यूआरआई को सही ढंग से समझ रहा हूं? जावा के बिना अधिकार के बारे में शिकायत किए बिना पथ निर्दिष्ट करने का कोई और तरीका है?

संपादित करें: हम यूआरआई के रूप में पथों को स्टोर करने में सक्षम होने की उम्मीद कर रहे थे, ताकि अन्य स्थानों को निर्दिष्ट करने के लिए यूआरआई के स्कीम-भाग का उपयोग किया जा सके (उदा। फ़ाइल: अन्य बनाम :)। लेकिन जैसे-जैसे ने कहा, ऐसा लगता है कि जावा सिर्फ यूआरआई के साथ अपने स्वयं के मुद्दों हो सकता है ...

उत्तर

14

ऐसा लगता है कि Java is wrong:

गलत: file:////applib/products/a%2Db/abc%5F9/4148.920a/media/start.swf
सही: file://applib/products/a-b/abc_9/4148.920a/media/start.swf

पर UNC paths in Java:

यूआरआई कक्षा यूएनसी पथ तर्क को संभालती है अच्छा है, लेकिन कुछ समस्याएं हैं। , यूआरआई यूआरआई के पथ घटक में पूरे यूएनसी पथ संग्रहीत करता

new File("//SERVER/some/path").toURI().toString() 
               -> "file:////SERVER/some/path 

दूसरे शब्दों में, और सर्वर/अधिकार घटक छोड़ देता है: जावा वर्ग पुस्तकालयों में, एक यूएनसी पथ की स्ट्रिंग प्रतिनिधित्व इस प्रकार है खाली। जब तक आप लगातार इस स्ट्रिंग प्रस्तुति का उपयोग करते हैं, तब तक आप java.net.URI के साथ सफलतापूर्वक बातचीत करने में सक्षम होंगे।

+0

आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद। दूसरा लिंक विशेष रूप से सहायक था। हालांकि यह मुझे समझ में आया कि पूरा पथ यूआरआई के 'पथ' खंड में संग्रहीत किया जाएगा, मैं देख सकता हूं कि जावा कुछ हद तक असंगत रूप से करता है, इसलिए मैं इसके लिए देखना सुनिश्चित कर दूंगा। – Sammy1Am

+0

वास्तव में जहां तक ​​मुझे पता है, फ़ाइल यूआरएल योजना को डबल स्लैश की भी आवश्यकता नहीं है, लेकिन केवल एक ही स्लैश है। जंगली में दोनों अक्सर देखा जाता है। – hippietrail

+0

https://tools.ietf.org/html/rfc3986#section-3 "जब प्राधिकरण मौजूद नहीं होता है, तो पथ दो स्लैश वर्णों से शुरू नहीं हो सकता है" –

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