जावा में URL के लिए एक स्थानीय फ़ाइल पास करें


175

URLयूनिट परीक्षणों के उद्देश्य से मैं स्थानीय फ़ाइल का उपयोग करके एक नई वस्तु कैसे बना सकता हूं ?

जवाबों:


283
new File(path).toURI().toURL();

22
जावा 7+ के लिए: पाथ्सगेट ("पथ", "से", "सामान")। टुरी ()! तोरेल ()
अजाक्स

46

जावा 7 का उपयोग करना:

Paths.get(string).toUri().toURL();

हालाँकि, आप शायद एक प्राप्त करना चाहते हैं URI। जैसे, एक URIशुरुआत होती है, file:///लेकिन एक URL जिसके साथ file:/(कम से कम, वह toStringपैदा करता है)।


"... एक URI फाइल के साथ शुरू होता है: /// लेकिन फाइल के साथ एक URL: / ..." क्या यह विंडोज और लिनक्स दोनों के लिए मामला है?
ptntialunrlsd

@ptntialunrlsd यह एक अच्छा प्रश्न है। मैंने जाँच नहीं की है, लेकिन मैं हाँ अनुमान लगाऊंगा।
हांग्जो डबिन्सकी

7
नहीं। URL केवल URI का एक विशेष मामला है। एक फ़ाइल URI "फ़ाइल: //" से शुरू होती है और फिर होस्ट (आमतौर पर छोड़ा गया), उसके बाद "/" और पथ "फू / बार" (आम तौर पर एक निरपेक्ष पथ के रूप में पढ़ने के लिए) को सूचीबद्ध करता है। इस प्रकार "फ़ाइल: /// foo / var"। एक URI जो "फ़ाइल: / foo / bar" जैसा दिखता है, गलत है। इसे भी देखें: फाइल URI स्कीम
डेविड टोनहोफर 14

@DavidTonhofer URIs के स्पष्टीकरण के लिए धन्यवाद, लेकिन यह ptntialunrlsd के प्रश्न का उत्तर नहीं देता है । Linux पर '... toURL () .String ()' का क्या उत्पादन होता है? इसके अलावा, मैंने आपके संपादन वापस कर दिए हैं क्योंकि उन्होंने मेरे उत्तर को बिना मतलब बदले में और अधिक खराब कर दिया है।
Aleksandr Dubinsky

3
@AleksandrDubinsky ऑरेकल जावदोक में पॉइंटर्स को छोड़ना सबसे अच्छा है, हालांकि .. इसके माध्यम से क्लिक करना आसान है java.nio.file.Paths। इसके अलावा, कृपया स्पष्ट करें कि आप "यूआरआई बनाम यूआरएल" में कार्यान्वयन का मतलब है । अनीव java.net.URL.toString()यूनिक्स पर एक ही चीज का उत्पादन करता है, जैसा कि यह होना चाहिए। यह केवल एक "/" दिखाता है जो बहुत गलत है ( फ़ाइल URI स्कीम देखें )। मुझे लगता है कि यह जावा में कारणों, बेहतर उपयोग के कारण है java.net.URI। यह एक कॉल पर "फाइल: // [होस्ट] /" को सही ढंग से जनरेट करता है .toString()
डेविड टोनहोफर


21
new URL("file:///your/file/here")

1
जहां /your/file/hereयूनिक्स / लिनक्स पर एक फ़ाइल के लिए एक निरपेक्ष पथ है। विंडोज पर मुझे लगता है कि यह अलग होगा।
रोबिन ग्रीन

5
यह बहुत चालाक नहीं है, क्योंकि आपको उन पात्रों के भागने से बचना होगा, जिन्हें स्वयं URL में अनुमति नहीं है। विंडोज (और संभावित रूप से अन्य ऑपरेटिंग सिस्टम) पर, आपको पथ विभाजक को मूल पथ से फ़ाइल में भी बदलना होगा।
जर्बंजो

new URL("file:my.properties");
वेबरनज

जबकि यह सही है, यह पोर्टेबल नहीं है क्योंकि यह निरपेक्ष रास्तों पर निर्भर करता है।
mazunki


5

पूर्ण सिंटैक्स के लिए यहां देखें: http://en.wikipedia.org/wiki/File_URI_scheme यूनिक्स जैसी प्रणालियों के लिए यह @Alex के अनुसार होगा, file:///your/file/hereजबकि विंडोज सिस्टम के लिए होगाfile:///c|/path/to/file


7
मैन्युअल रूप से ऐसा मत करो। File.toURI().toURL()जाने का रास्ता है
शॉन पैट्रिक फ्लोयड

3
@SeanPatrickFloyd कभी-कभी आपके पास कोई विकल्प नहीं होता है, जैसे कि जब यह किसी .propertiesफ़ाइल में होता है।
स्लेज

@ArtB मैं नहीं देखता कि कैसे फर्क पड़ता है
सीन पैट्रिक फ्लोयड

2
@SeanPatrickFloyd, यह प्रश्न / उत्तर तब आता है जब आप खोजते हैं java file url, जो मेरे मामले में इसका मतलब है कि मैं एक file://URL के प्रारूप के लिए खोज रहा था , जावा में, एक .propertiesफ़ाइल में उपयोग करने के लिए, या मैन्युअल रूप से टाइप करने के लिए, आदि
davepall

1
@SeanPatrickFloyd कभी-कभी आपके पास स्रोत कोड तक पहुंच नहीं होती है, बस संपत्ति के लिए, और file://दुर्भाग्य से आवश्यक है। सिस्टम निर्भर होना इतना बड़ा मुद्दा नहीं है क्योंकि यह एक परस्पर संपत्ति है।
अक्टूबर को

4

आप भी उपयोग कर सकते हैं

[AnyClass].class.getResource(filePath)

2
लेकिन केवल अगर वह फ़ाइल
क्लासपैथ के

1
यदि "फ़ाइलपाथ" एक जार में पाया जा सकता है, तो परिणामी URL जैसा है jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
डेविड टोनहोफर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.