जावा में एक संसाधन, यूआरआई, यूआरएल, पथ और फ़ाइल के बीच अंतर क्या है?


96

मैं अभी जावा कोड के एक टुकड़े को देख रहा हूं, और यह एक स्ट्रिंग के रूप में एक रास्ता लेता है और इसके URL का उपयोग करता है URL resource = ClassLoader.getSystemClassLoader().getResource(pathAsString);, फिर कॉल String path = resource.getPath()करता है और अंत में निष्पादित करता है new File(path);

ओह, और भी करने के लिए कॉल कर रहे हैं URL url = resource.toURI();और String file = resource.getFile()

मैं अभी पूरी तरह से भ्रमित हूँ - ज्यादातर शब्दावली के कारण, मुझे लगता है। क्या कोई कृपया मुझे मतभेदों के माध्यम से चल सकता है, या डमी-प्रूफ सामग्री के लिए कुछ लिंक प्रदान कर सकता है? विशेष रूप से URI से URL और फ़ाइल में संसाधन ? मेरे लिए, ऐसा लगता है कि उन्हें क्रमशः एक ही चीज़ होना चाहिए ...

यहाँ getFile()और इसके बीच का अंतर getPath()समझाया गया है: url.getFile () और getpath () के बीच क्या अंतर है? (दिलचस्प है कि वे दोनों स्ट्रिंग्स को लौटाने लगते हैं, जो शायद मेरे मन की स्थिति में बहुत कुछ जोड़ता है ...)

अब, अगर मेरे पास एक लोकेटर है जो जार फ़ाइल में एक वर्ग या पैकेज का संदर्भ देता है, तो क्या वे दो (यानी एक फ़ाइल स्ट्रिंग्स पथ) भिन्न होंगे?

resource.toString()आप jar:file:/C:/path/to/my.jar!/com/example/सभी के बाद (विस्मयादिबोधक चिह्न पर ध्यान दें) देंगे ।

क्या जावा में URI और URL के बीच अंतर है कि पूर्व रिक्त स्थान को एनकोड नहीं करता है? सी एफ जावा में विरोधाभासी फाइलें, यूआरआई और यूआरएल (यह उत्तर दो शब्दों के बीच सामान्य, वैचारिक अंतर को अच्छी तरह से समझाता है : यूआरआई पहचान और यूआरएल का पता लगाते हैं; )

अंत में - और सबसे महत्वपूर्ण बात - मुझे Fileऑब्जेक्ट की आवश्यकता क्यों है ; संसाधन ( URL) पर्याप्त क्यों नहीं है? (और एक संसाधन वस्तु है?)

क्षमा करें यदि यह प्रश्न थोड़ा असंगठित है; यह सिर्फ भ्रम की स्थिति को दर्शाता है ... :)


5
और आपने PathNIO से
फ़ाइलस्सिस्टम

2
@ एक बार में एक सिरदर्द, कृपया। ;)
क्रिश्चियन

1
वैसे आपके प्रश्न के संदर्भ में फ़ाइल / URL + URI संबंधित नहीं हैं। एक फाइलों पर नाम रखने और संचालित करने का एक माध्यम है, दूसरा संसाधनों से नाम रखने और पढ़ने की एक विधि है (जो फाइलें हो सकती हैं)। GetFile और getPath विधियाँ एक URL के घटकों के साथ व्यवहार करती हैं जो फ़ाइल ऑब्जेक्ट्स की तरह (भ्रामक रूप से) हैं। क्लास लोडर संसाधनों को फ़ाइलों के रूप में प्रस्तुत नहीं किया जाता है क्योंकि उनके पास विभिन्न मूल हो सकते हैं (या JAR फ़ाइलों में नेस्टेड हो सकते हैं)।
eckes

1
मैं यह नोट करूंगा कि यह कोड इच्छित के अनुसार काम करने की संभावना नहीं है। एक URLहै अपारदर्शी - के रूप में आपको बताएंगे कि यह है jar:file:, यानी एक में एक संसाधन .jarसंग्रह। Whacking कि एक Fileमें बहुत उपयोगी कुछ भी परिणाम की संभावना नहीं है।
बोरिस स्पाइडर

1
आपकी समस्या का दिल यह है कि संदर्भ के आधार पर संसाधन और पथ शब्द के अलग-अलग अर्थ हो सकते हैं।
राेडवल्ड

जवाबों:


43

UPDATE 2017-04-12 JvR के उत्तर की जाँच करें क्योंकि इसमें अधिक विस्तृत और सटीक विवरण है!


कृपया ध्यान दें कि मैं जवाब देने के लिए खुद को 100% सक्षम नहीं मानता, लेकिन फिर भी यहां कुछ टिप्पणियां हैं:

  • File फ़ाइल या निर्देशिका फ़ाइल सिस्टम के माध्यम से सुलभ का प्रतिनिधित्व करता है
  • संसाधन डेटा ऑब्जेक्ट के लिए एक सामान्य शब्द है जिसे एप्लिकेशन द्वारा लोड किया जा सकता है
    • आमतौर पर संसाधन एप्लिकेशन / लाइब्रेरी के साथ वितरित की जाने वाली फाइलें और क्लास-लोडिंग तंत्र (जब वे क्लास-पाथ पर रहते हैं) के माध्यम से लोड होते हैं
  • URL#getPathURL के पथ भाग पर प्राप्तकर्ता है ( protocol://host/path?query)
  • URL#getFile JavaDoc रिटर्न के अनुसार path+query

जावा में, URIजेनरिक आइडेंटिफ़ायर को हेरफेर करने के लिए केवल एक डेटा संरचना है।

URLदूसरी ओर वास्तव में एक संसाधन लोकेटर है और आपको पंजीकृत URLStreamHandlerएस के माध्यम से संसाधन को वास्तव में पढ़ने के लिए सुविधाएँ प्रदान करता है ।

URL से फ़ाइल-सिस्टम संसाधन प्राप्त हो सकते हैं और आप file://प्रोटोकॉल का उपयोग करके हर फ़ाइल सिस्टम संसाधन के लिए URL का निर्माण कर सकते हैं (इसलिए File<-> URLसंबंध)।

यह भी ध्यान रखें कि URL#getFileयह असंबंधित है java.io.File


मुझे फ़ाइल ऑब्जेक्ट की आवश्यकता क्यों है; संसाधन (URL) पर्याप्त क्यों नहीं है?

यह पर्याप्त है। केवल अगर आप संसाधन को कुछ घटक में पास करना चाहते हैं जो केवल फाइलों के साथ काम कर सकता है, तो आपको Fileइससे प्राप्त करने की आवश्यकता है। हालाँकि सभी संसाधन URL को Files में परिवर्तित नहीं किया जा सकता है ।

और क्या कोई संसाधन वस्तु है?

JRE के दृष्टिकोण से, यह केवल एक शब्द है। कुछ चौखटे आपको ऐसे वर्ग (जैसे स्प्रिंग का संसाधन ) प्रदान करते हैं ।


5
वहाँ भी है java.nio.file.Path, जो मूल रूप से जावा (जावा 7+) के लिए प्रतिस्थापन है java.io.File, क्योंकि बाद के एपीआई को जाहिरा तौर पर जावा के शुरुआती दिनों में खराब माना गया था।
ntoskrnl

1
आम तौर पर, आपको URL का उपयोग तब तक कम से कम करना चाहिए जब तक कि यह बिल्कुल आवश्यक न हो। कारण यह है कि URL के समतुल्य और हैशकोड तरीके आश्चर्यजनक तरीके से कार्यान्वित किए जाते हैं: वे विधि कॉल को रोक रहे हैं।
kibibyte

3
@kibibyte: मैं उम्मीद करूंगा कि कॉल अवरुद्ध हो रही है, हैशकोड के एक अतुल्यकालिक कार्यान्वयन के लिए और अब बहुत ही समान होगा। मुझे लगता है कि आपका क्या मतलब है कि कॉल की कोशिश करेंगे और मेजबान को यह पता लगाने के लिए हल करेंगे कि क्या वे समकक्ष हैं और इस प्रकार संभवतः अवरुद्ध नेटवर्क कॉल कर सकते हैं।
न्यूटोपियन

50

मैं अभी पूरी तरह से भ्रमित हूँ - ज्यादातर शब्दावली के कारण, मुझे लगता है। क्या कोई कृपया मुझे मतभेदों के माध्यम से चल सकता है, या डमी-प्रूफ सामग्री के लिए कुछ लिंक प्रदान कर सकता है? विशेष रूप से URI से URL और फ़ाइल में संसाधन? मेरे लिए, ऐसा लगता है कि उन्हें क्रमशः एक ही चीज़ होना चाहिए ...

शब्दावली भ्रामक है और कभी-कभी भ्रामक होती है, और ज्यादातर जावा से एक एपीआई के रूप में और समय के साथ एक मंच के रूप में विकसित होती है। यह समझने के लिए कि इन शर्तों का क्या मतलब है कि वे क्या करते हैं, जावा की डिजाइन को प्रभावित करने वाली दो चीजों को पहचानना महत्वपूर्ण है:

  • पिछेड़ी संगतता। पुराने अनुप्रयोगों को नए प्रतिष्ठानों पर चलना चाहिए, आदर्श रूप से बिना संशोधन के। इसका मतलब है कि एक पुराने एपीआई (इसके नाम और शब्दावली के साथ) को सभी नए संस्करणों के माध्यम से बनाए रखने की आवश्यकता है।
  • क्रॉस-प्लेटफॉर्म। एपीआई को अपने अंतर्निहित प्लेटफ़ॉर्म का उपयोग करने योग्य सार प्रदान करना चाहिए, चाहे वह ऑपरेटिंग सिस्टम हो या ब्राउज़र।

मैं अवधारणाओं के माध्यम से चलूँगा और वे कैसे आएंगे। मैं उसके बाद आपके अन्य, विशिष्ट प्रश्नों का उत्तर दूंगा, क्योंकि मुझे पहले भाग में कुछ का उल्लेख करना पड़ सकता है।

"संसाधन" क्या है?

डेटा का एक सार, सामान्य टुकड़ा जो स्थित और पढ़ा जा सकता है। ढीली ने कहा, जावा इसका उपयोग एक "फ़ाइल" को संदर्भित करने के लिए करता है जो एक फ़ाइल नहीं हो सकती है लेकिन एक नामित डेटा का प्रतिनिधित्व करती है। जावा में इसका प्रत्यक्ष वर्ग या इंटरफ़ेस प्रतिनिधित्व नहीं है , लेकिन इसके गुणों (नियंत्रण योग्य, पठनीय) के कारण इसे अक्सर URL द्वारा दर्शाया जाता है।

क्योंकि जावा के शुरुआती डिज़ाइन लक्ष्यों में से एक को ब्राउज़र के अंदर सैंडबॉक्स किए गए एप्लिकेशन (एप्लेट्स) के रूप में चलाया जाना था, बहुत सीमित अधिकारों / विशेषाधिकारों / सुरक्षा मंजूरी के साथ, जावा एक फ़ाइल के बीच एक स्पष्ट (सैद्धांतिक) अंतर बनाता है (स्थानीय कुछ पर) फ़ाइल सिस्टम) और एक संसाधन (कुछ इसे पढ़ने की जरूरत है)। यही कारण है कि एप्लिकेशन (आइकन, क्लास फाइलें, और इसी तरह) के सापेक्ष कुछ पढ़ना ClassLoader.getResourceफ़ाइल वर्ग के माध्यम से और नहीं के माध्यम से किया जाता है ।

दुर्भाग्य से, क्योंकि "संसाधन" भी एक उपयोगी सामान्य शब्द है बाहर इस व्याख्या के, यह भी बहुत विशिष्ट बातें (वर्ग जैसे नाम के लिए प्रयोग किया जाता है ResourceBundle , UIResource , संसाधन ) है कि नहीं कर रहे हैं, इस अर्थ में, एक संसाधन।

एक संसाधन का प्रतिनिधित्व करने वाली मुख्य कक्षाएं (एक पथ) java.nio.file.Path , java.io.File , java.net.URI और java.net.URL हैं

फ़ाइल (java.io, 1.0)

फ़ाइल और निर्देशिका पथनामों का एक सार प्रतिनिधित्व।

फ़ाइल वर्ग एक संसाधन का प्रतिनिधित्व करता है जो प्लेटफ़ॉर्म की मूल फ़ाइल सिस्टम के माध्यम से उपलब्ध है । इसमें केवल फ़ाइल का नाम है, इसलिए यह वास्तव में एक पथ है (बाद में देखें) जो होस्ट प्लेटफ़ॉर्म अपनी सेटिंग्स, नियमों और वाक्यविन्यास के अनुसार व्याख्या करता है।

ध्यान दें कि फ़ाइल को कुछ स्थानीय की ओर संकेत करने की आवश्यकता नहीं है , बस कुछ ऐसा है जो होस्ट प्लेटफ़ॉर्म फ़ाइल एक्सेस के संदर्भ में समझता है, जैसे विंडोज में एक यूएनसी पथ। यदि आप अपने ओएस में एक फाइल सिस्टम के रूप में जिप फाइल को माउंट करते हैं, तो फाइल इसके निहित प्रविष्टियों को ठीक पढ़ेगी।

URL (java.net, 1.0)

क्लास URL यूनिफ़ॉर्म रिसोर्स लोकेटर का प्रतिनिधित्व करता है, जो वर्ल्ड वाइड वेब पर "संसाधन" का सूचक है। एक फ़ाइल या निर्देशिका के रूप में एक संसाधन कुछ सरल हो सकता है, या यह एक अधिक जटिल वस्तु का संदर्भ हो सकता है, जैसे डेटाबेस या खोज इंजन के लिए क्वेरी।

एक संसाधन की अवधारणा के साथ मिलकर, URL उस संसाधन का प्रतिनिधित्व करता है जिस तरह से फ़ाइल वर्ग होस्ट प्लेटफ़ॉर्म में एक फ़ाइल का प्रतिनिधित्व करता है: एक संरचित स्ट्रिंग के रूप में जो एक संसाधन को इंगित करता है। URL में अतिरिक्त रूप से एक योजना होती है जो संसाधन तक पहुंचने के संकेत देती है ("फ़ाइल के साथ:" "होस्ट प्लेटफ़ॉर्म से पूछें"), और इसलिए HTTP, FTP के माध्यम से संसाधनों को JAR और व्हाट्सएप के माध्यम से इंगित करने की अनुमति देता है।

दुर्भाग्य से, URL "फ़ाइल" और "पथ" के उपयोग सहित अपने स्वयं के सिंटैक्स और शब्दावली के साथ आते हैं। यदि URL एक फ़ाइल-URL है, तो URL.getFile संदर्भित फ़ाइल के पथ स्ट्रिंग के समान स्ट्रिंग लौटाएगा।

Class.getResource एक URL लौटाता है: यह फ़ाइल को लौटाने की तुलना में अधिक लचीला है, और इसने 1990 की शुरुआत में कल्पना की गई प्रणाली की जरूरतों को पूरा किया है।

URI (java.net, 1.4)

एक समान संसाधन पहचानकर्ता (URI) संदर्भ का प्रतिनिधित्व करता है।

URI URL पर एक (मामूली) अमूर्तता है। यूआरआई और यूआरएल के बीच अंतर वैचारिक और ज्यादातर अकादमिक है, लेकिन यूआरआई को औपचारिक रूप से बेहतर परिभाषित किया गया है, और उपयोग के मामलों की एक विस्तृत श्रृंखला को शामिल किया गया है। चूँकि URL और URI समान नहीं थे / हैं, इसलिए उनका प्रतिनिधित्व करने के लिए एक नई कक्षा शुरू की गई, जिसमें URI.toURL और URL.toURI एक और दूसरे के बीच स्थानांतरित करने के तरीके हैं।

जावा में, URL और URI के बीच मुख्य अंतर यह है कि एक URL resolvable होने की अपेक्षा को वहन करता है , कुछ ऐसा अनुप्रयोग जिसे इनपुटस्ट्रीम से चाह सकते हैं; एक यूआरआई अधिक एक सार thingamajig उस तरह व्यवहार किया जाता है हो सकता है कुछ समाधान योग्य को इंगित (और आमतौर पर करता है), लेकिन क्या इसका मतलब है और कैसे तक पहुँचने के लिए यह संदर्भ और व्याख्या के लिए और अधिक खुले हैं।

पथ (java.nio.file, 1.7)

एक फाइल सिस्टम में एक फ़ाइल का पता लगाने के लिए इस्तेमाल किया जा सकता है। यह आमतौर पर एक प्रणाली पर निर्भर फ़ाइल पथ का प्रतिनिधित्व करेगा।

पथ इंटरफ़ेस में नया नया एपीआई, फ़ाइल वर्ग की तुलना में अधिक लचीलेपन की अनुमति देता है। पथ इंटरफ़ेस फ़ाइल वर्ग का एक अमूर्त है , और न्यू IO फ़ाइल एपीआई का हिस्सा है । जहाँ फ़ाइल आवश्यक रूप से एक "फ़ाइल" की ओर इशारा करती है जैसा कि होस्ट प्लेटफ़ॉर्म द्वारा समझा जाता है, पथ अधिक सामान्य है: यह एक फ़ाइल (संसाधन) को एक मनमाना फ़ाइल सिस्टम में दर्शाता है।

पथ एक फ़ाइल के होस्ट प्लेटफ़ॉर्म की अवधारणा पर निर्भरता को दूर ले जाता है। यह एक ज़िप फ़ाइल में एक प्रविष्टि हो सकती है, एफ़टीपी या एसएसएच-एफएस के माध्यम से एक फ़ाइल, जो एप्लिकेशन क्लासपाथ का एक बहु-रूट प्रतिनिधित्व है, या वास्तव में कुछ भी जो फ़ाइलसिस्टम इंटरफ़ेस और इसके चालक, फाइलस्प्रोप्राइडर के माध्यम से सार्थक रूप से प्रस्तुत किया जा सकता है। यह जावा एप्लिकेशन के संदर्भ में "बढ़ते" फ़ाइल सिस्टम की शक्ति लाता है।

होस्ट प्लेटफ़ॉर्म को "डिफ़ॉल्ट फ़ाइल सिस्टम" के माध्यम से दर्शाया गया है; जब आप कॉल करते हैं File.toPath, तो आपको डिफ़ॉल्ट फ़ाइल सिस्टम पर एक पथ मिलता है।


अब, अगर मेरे पास एक लोकेटर है जो जार फ़ाइल में एक वर्ग या पैकेज का संदर्भ देता है, तो क्या वे दो (यानी एक फ़ाइल स्ट्रिंग्स पथ) भिन्न होंगे?

संभावना नहीं है। तो जार फ़ाइल स्थानीय फाइल सिस्टम पर है, तो आप एक प्रश्न घटक होना चाहिए नहीं, तो URL.getPathऔर URL.getFileही परिणाम लौटना चाहिए। हालाँकि, आपको जो आवश्यक है उसे चुनें: फ़ाइल-URL में आमतौर पर क्वेरी घटक नहीं हो सकते हैं, लेकिन मैं निश्चित रूप से किसी को भी जोड़ सकता हूं।

अंत में - और सबसे महत्वपूर्ण बात - मुझे फ़ाइल ऑब्जेक्ट की आवश्यकता क्यों है; संसाधन (URL) पर्याप्त क्यों नहीं है?

URL पर्याप्त नहीं हो सकता है क्योंकि फ़ाइल आपको अनुमतियों (जैसे पढ़ने योग्य, लिखने योग्य, निष्पादन योग्य), फ़ाइल प्रकार (मैं एक निर्देशिका हूं?), और स्थानीय फ़ाइल सिस्टम को खोजने और हेरफेर करने की अनुमति जैसे हाउसकीपिंग डेटा तक पहुंच प्रदान करता है। यदि ये ऐसी विशेषताएं हैं जिनकी आपको आवश्यकता है, तो फ़ाइल या पथ उन्हें प्रदान करें।

यदि आपके पास पाथ तक पहुँच है, तो आपको फ़ाइल की आवश्यकता नहीं है। कुछ पुराने API को फ़ाइल की आवश्यकता हो सकती है, हालाँकि।

(और एक संसाधन वस्तु है?)

नहीं, वहाँ नहीं है। इसके नाम से कई चीजें हैं, लेकिन वे इस अर्थ में संसाधन नहीं हैं ClassLoader.getResource


वाह, बहुत गहन। बस इसके माध्यम से जा रहा है, लेकिन पहले से ही पहला अनुवर्ती प्रश्न है: जब आप कहते हैं कि एक फ़ाइल में "केवल फ़ाइल का नाम शामिल है", तो क्या आप अपने प्रारंभिक कथन का खंडन नहीं करते हैं कि यह "फ़ाइल और निर्देशिका पथनामों का एक सार प्रतिनिधित्व" है - आईमोर?
क्रिश्चियन

1
@Christian मेरा मतलब था "केवल नाम" जैसा कि: किसी भी तरह से फ़ाइल की सामग्री को मॉडल नहीं करता है; यह एक स्ट्रिंग के चारों ओर एक पतली आवरण है। "सार प्रतिनिधित्व" भाग एपीआई डॉक्स से उद्धृत है। ;)
जेवीआर

यह उत्तर बहुत अधिक उत्थान के योग्य है ... पाठकों को इस बात के लिए मेरे स्वीकृत उत्तर को अपडेट करेगा।
पावेल हॉरल

12

पावेल होरल का जवाब अच्छा है।

जैसा कि वे कहते हैं, "फ़ाइल" शब्द URL#getFileबनाम में बिल्कुल अलग (व्यावहारिक रूप से असंबंधित) अर्थ है java.io.File- यह भ्रम का हिस्सा हो सकता है।

बस जोड़ने के लिए:

  • जावा में एक संसाधन एक अमूर्त अवधारणा है, डेटा का एक स्रोत है जिसे पढ़ा जा सकता है। किसी संसाधन द्वारा किसी संसाधन के स्थान (या पते) का प्रतिनिधित्व जावा में किया जाता है URL

  • एक संसाधन स्थानीय फाइल सिस्टम में एक नियमित फाइल के अनुरूप हो सकता है (विशेषकर, जब इसकी URLशुरुआत होती है file://)। लेकिन एक संसाधन अधिक सामान्य है (यह एक जार में संग्रहीत कुछ फ़ाइल, या नेटवर्क से पढ़ने के लिए कुछ डेटा या मेमोरी से या ...) भी हो सकता है। और यह अधिक सीमित है, क्योंकि एक File(एक नियमित फ़ाइल की तुलना में अन्य चीजें होने के अलावा: एक निर्देशिका, एक लिंक) भी बनाया जा सकता है और इसके लिए कुश्ती की जा सकती है।

  • जावा में याद रखें एक Fileऑब्जेक्ट वास्तव में "एक फाइल" का प्रतिनिधित्व नहीं करता है, लेकिन एक फ़ाइल का स्थान (पूरा नाम, पथ के साथ)। इसलिए, एक Fileऑब्जेक्ट आपको एक फ़ाइल का पता लगाने (और खोलने) की URLअनुमति देता है , एक संसाधन के रूप में आपको एक्सेस करने (और खोलने) की अनुमति देता है। ( Resourceसंसाधन का प्रतिनिधित्व करने के लिए जावा में कोई वर्ग नहीं है , लेकिन न तो किसी फ़ाइल का प्रतिनिधित्व करने के लिए एक है! एक बार और: Fileएक फ़ाइल नहीं है, यह एक फ़ाइल का पथ है)।


3

जैसा कि मैंने उन्हें समझा है, आप उन्हें निम्नलिखित के रूप में वर्गीकृत कर सकते हैं:

वेब-आधारित: URI और URL

  • URL: एक URL इंटर्न पर एक निश्चित स्थान है (बस एक सामान्य वेबड्रेस जैसे - stackoverflow.com)
  • यूआरआई: एवर यूआरएल एक यूआरआई है। लेकिन यूआरआई में "मेल्टो:" जैसी चीजें भी हो सकती हैं, इसलिए वे भी हैं, अच्छी तरह से एक "स्क्रिप्ट" जो मैं कहूंगा।

और स्थानीय: संसाधन, पथ और फ़ाइलें

  • संसाधन: संसाधन आपके जार के अंदर की फाइलें हैं। उनका उपयोग जार / कंटेनरों से फाइलों को लोड करने के लिए किया जाता है।
  • पथ: एक पथ मूल रूप से एक स्ट्रिंग है। लेकिन यह कई कामों के साथ आता है कई स्ट्रिंग्स को समाप्‍त करने के लिए, या एक स्ट्रिंग में फ़ाइलों को जोड़ने के लिए। यह सुनिश्चित करता है कि आप जिस पथ का निर्माण कर रहे हैं वह वैध है।
  • फ़ाइल: यह निर्देशिका या फ़ाइल का संदर्भ है। इसका उपयोग फाइलों को संशोधित करने, उन्हें खोलने आदि के लिए किया जाता है।

यह आसान होगा यदि उन्हें एक वर्ग में मिला दिया जाएगा - वे वास्तव में भ्रमित हैं: डी

मैं आशा करता हूं कि इससे तुम्हें सहायता मिलेगी :)

(मैं सिर्फ प्रलेखन पर एक नज़र - docs.oracle.com को देखो)


0

एक फ़ाइल स्थानीय फाइल सिस्टम में एक इकाई का एक सार प्रतिनिधित्व है।

एक पथ आम तौर पर एक फ़ाइल सिस्टम के भीतर फ़ाइल के स्थान को इंगित करने वाला एक स्ट्रिंग है। इसमें आमतौर पर फ़ाइल नाम शामिल नहीं होता है। तो c: \ documents \ mystuff \ stuff.txt में "C: \ documents \ mystuff" के मान के साथ एक पथ होगा। जाहिर है कि निरपेक्ष फ़ाइलनाम और पथ का प्रारूप फ़ाइल सिस्टम से फाइल सिस्टम में बहुत भिन्न होगा।

URL आमतौर पर http पर सुलभ संसाधनों का प्रतिनिधित्व करने वाले URL के साथ URI का एक susbset है। मुझे नहीं लगता कि किसी चीज के बारे में किसी तरह का आयरनक्लाड नियम है, जब किसी को यूआरआई बनाम यूआरएल होना चाहिए। यूआरआई "प्रोटोकॉल: // संसाधन-पहचानकर्ता" जैसे बिटकॉइन: // params, http://something.com?param=value के रूप में तार हैं । URL जैसी कक्षाएं आम तौर पर स्ट्रिंग को लपेटती हैं और उपयोगिता विधियाँ प्रदान करती हैं जो स्ट्रिंग के पास आपूर्ति करने का कोई कारण नहीं होगा।

संसाधन जैसी कोई चीज नहीं, कम से कम उस अर्थ में नहीं, जिसके बारे में आप बात कर रहे हैं। सिर्फ इसलिए कि एक विधि का नाम getResource है इसका मतलब यह नहीं है कि यह एक प्रकार का संसाधन देता है।

अंततः यह जानने का सबसे अच्छा तरीका है कि क्लास के तरीके क्या हैं, अपने कोड में इसका एक उदाहरण बनाना है, विधियों को कॉल करें और फिर या तो डिबग मोड में कदम रखें या परिणाम को भेजें।


"पथ" की आपकी परिभाषा ओपी संदर्भ में "पथ" की अवधारणा के अनुरूप नहीं है
leonbloy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.