फ़ाइल के getAbsolutePath विधि में वर्तमान कामकाजी निर्देशिका पर भ्रम
फ़ाइल के getAbsolutePath में यह प्रवृत्ति होती है कि यदि फ़ाइल निर्माणकर्ता में कोई सापेक्ष पथ या बस फ़ाइल नाम प्रदान किया जाता है, तो यह वर्तमान कार्य निर्देशिका को उपसर्ग करके निरपेक्ष पथ को हल करेगा।
वर्तमान कामकाजी निर्देशिका की परिभाषा वह निर्देशिका है जहां हम अपना जावा प्रोग्राम चलाते हैं। मेरे उदाहरण में, मेरा जावा प्रोग्राम अंदर रहता हैD:\my-app\src\App.java
जब मैं ए System.out.println(System.getProperty("user.dir"));
फिर इसे आदर्श रूप से प्रिंट करना चाहिए D:\my-app\src
लेकिन यह वास्तव में छपाई है D:\my-app
ऐसा क्यों है?
जवाब
जब आप IntelliJ से कोई एप्लिकेशन शुरू करते हैं, तो इसकी वर्किंग डायरेक्टरी "रन / डीबग कॉन्फिगरेशन" डायलॉग में "वर्किंग डायरेक्टरी" में सेट की गई के अनुसार सेट होती है ।
वहां, आप कार्यशील निर्देशिका को एक निश्चित मान पर सेट कर सकते हैं जैसे कि D:\my-app\src
। एक अन्य विकल्प एक पथ चर का उपयोग करना है । स्पष्ट रूप से उपलब्ध होने वाले चर की सूची कई चीजों पर निर्भर कर सकती है - संवाद खोलें और देखें कि क्या उपलब्ध है। एक विकल्प जो मुझे दिखाई देता है वह है $FileDir$
जो मैं कल्पना करता हूं कि स्रोत कोड फ़ाइल की निर्देशिका होगी।
मुझे लगता है कि मुझे इसका हल मिल गया। Intellij वास्तव में स्रोत फ़ोल्डर के रूप में src फ़ोल्डर को स्थापित करके समस्या का कारण बन रहा था। मैंने इसे Intellij के भीतर मॉड्यूल सेटिंग पर जाकर पाया। जब मैं कमांड प्रॉम्प्ट से समान चलाता था, तो सही वर्किंग डायरेक्टरी यानी D:\my-app\src\
चुना जाता है।