क्या इस कक्षा के कोड से निष्पादित कक्षा के वर्तमान फाइल सिस्टम स्थान को रनटाइम में निर्धारित करने का कोई तरीका है, क्योंकि यह java
कमांड का उपयोग करके निष्पादित किया गया है?कक्षा के फाइल सिस्टम को निष्पादित किया जा रहा है
निम्नलिखित वर्ग के लिए उदाहरण के लिए:
public class MyClass{
public static void main(String[] args){\
new MyClass().doStuff();
}
private void doStufF(){
String path = ... // what to do here?!
System.out.println("Path of class being invoked: " + path);
}
}
वहाँ किसी भी तरह से मिलता है और MyClass.class फ़ाइल के फ़ाइल में सही पथ मुद्रित करने के लिए है बस लागू किया जा रहा?
इसी तरह, अगर मैं java -jar
आदेश से जार फ़ाइल आह्वान, वहाँ किसी भी तरह से है कि जार के अंदर वर्गों के भीतर से जार फ़ाइल के लिए एक रास्ता पाने के लिए है?
पीएस: कृपया, कार्यशील निर्देशिका के बारे में कोई धारणा न करें, जिससे java
कमांड लागू किया गया है!
ऐसा करने से सावधान रहें: यदि आपकी कक्षा फ़ाइल उस निर्देशिका में कहीं है जहां इसमें कोई स्थान है, तो लौटाई गई स्ट्रिंग (जो कि है एक यूआरएल का पथ हिस्सा, जो मिलता है स्थान() रिटर्न, और इसलिए यूआरएल एन्कोड किया गया है) में रिक्त स्थान के बजाय '% 20' होगा! –
@JandeVos 'फ़ाइल (java.net.URI)' कन्स्ट्रक्टर का उपयोग करके उस समस्या को ठीक करने लगता है। – Spooky
@ स्पूकी की टिप्पणी: तो यह 'अंतिम फ़ाइल f = नई फ़ाइल (MyClass.class.getProtectionDomain() होनी चाहिए। GetCodeSource()। GetLocation()। GetURI()। GetPath()); ' –