यदि यह पहले से ही क्लासपाथ में है, तो बस इसे डिस्क फ़ाइल सिस्टम के बजाय क्लासपाथ से प्राप्त करें। में रिश्तेदार पथ के साथ बेला मत करो java.io.File। वे वर्तमान कामकाजी निर्देशिका पर निर्भर हैं, जिस पर आपके पास जावा कोड के अंदर से पूरी तरह से कोई नियंत्रण नहीं है।
मान लें कि ListStopWords.txtआपकी FileLoaderकक्षा के समान पैकेज में है , तब करें:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
या यदि आप आखिरकार हैं तो वास्तव InputStreamमें इसका एक हिस्सा है:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
यह निश्चित रूप से बनाने पर पसंद किया जाता है new File()क्योंकि urlयह आवश्यक रूप से डिस्क फ़ाइल सिस्टम पथ का प्रतिनिधित्व नहीं कर सकता है, लेकिन यह वर्चुअल फ़ाइल सिस्टम पथ का प्रतिनिधित्व भी कर सकता है (जो तब हो सकता है जब डिस्क फ़ाइल सिस्टम पर एक अस्थायी फ़ोल्डर में JAR को मेमोरी में विस्तारित किया जाता है) या यहां तक कि एक नेटवर्क पथ जो दोनों प्रति रचनाकार द्वारा पचने योग्य नहीं हैं File।
यदि फ़ाइल -as पैकेज नाम संकेत है- वास्तव में एक "पूर्ण" एक्सटेंशन के साथ एक पूर्ण गुण वाली फ़ाइल ( key=valueलाइनें युक्त ) है, तो आप InputStreamतुरंत load()विधि को खिला सकते हैं ।
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
नोट: जब आप इसे अंदर के staticसंदर्भ से एक्सेस करने का प्रयास कर रहे हों , तो उपरोक्त उदाहरणों के बजाय FileLoader.class(या जो भी YourClass.class) उपयोग करें getClass()।
properties.filesके लिए2?