2013-04-26 9 views
65

मैं अपने यूनिट परीक्षणों के लिए आधार डीआईआर के रूप में user.dir डीआईआर का उपयोग करना चाहता हूं (जो बहुत सारी फाइलें बनाता है)। क्या यह सही है कि यह गुण वर्तमान कार्यशील निर्देशिका को इंगित करता है (उदा। 'सीडी' कमांड द्वारा निर्धारित)?जावा "user.dir" संपत्ति - इसका क्या अर्थ है?

+2

के लिए निर्देशिका या कार्यक्षेत्र के रास्ते को हासिल करेगा के रूप में http://stackoverflow.com/a/ में कहा गया है 840229/3159183, ध्यान रखें कि '-Duser.dir' ध्वज 'फ़ाइल' ऑब्जेक्ट्स को प्रभावित करता है (यदि उन्हें पूर्ण पथ नहीं दिया जाता है) लेकिन' FileOutPutStream' ऑब्जेक्ट्स 'नहीं। यदि आप दोनों के लिए डिफ़ॉल्ट निर्देशिका मिलान सुनिश्चित करना चाहते हैं, तो आपको जावा शुरू करने से पहले 'cd' होना चाहिए। – SeldomNeedy

उत्तर

88

यह निर्देशिका है जहां java चलाया गया था, जहां आपने JVM प्रारंभ किया था। उपयोगकर्ता की होम निर्देशिका में नहीं होना चाहिए। यह कहीं भी हो सकता है जहां उपयोगकर्ता को जावा चलाने की अनुमति है।

तो यदि आप cd/somedir में, तो अपने प्रोग्राम को चलाएं, user.dir/somedir होगा।

एक अलग संपत्ति, user.home, उपयोगकर्ता निर्देशिका को संदर्भित करता है। /Users/myuser या /home/myuser या C:\Users\myuser के रूप में।

सिस्टम गुणों और उनके विवरणों की सूची के लिए here देखें।

+0

सुधारित। User.dir के बारे में कैसे? –

+1

पोस्ट करने से पहले इसे पहले ही पढ़ा है। लेकिन "उपयोगकर्ता काम करने वाली निर्देशिका" एक सर्वोत्तम स्पष्टीकरण नहीं है, उम्मीद है कि आप सहमत हैं। –

5

के अनुसार आम तौर पर इस निर्देशिका जहां आपका ऐप्स (जावा) शुरू किया गया था (कार्य निर्देशिका) है। "आमतौर पर" क्योंकि यह बदला जा सकता है, जैसे जब आप Runtime.exec(String[] cmdarray, String[] envp, File dir)

+0

मैवेन सिस्टम द्वारा जूनिट परीक्षण निष्पादन के दौरान केवल एक मूल्य की आवश्यकता होती है। –

+0

और जब आप इसे मैक पर बदलते हैं, तो यह इस परीक्षण की तरह चीजें तोड़ता है https://stackoverflow.com/questions/45130661/user-dir-property-broken-on-osx-jdk-1-8-0-111- कैसे-के-अन्य-ओएस संस्करण :(:( –

2

System.getProperty("user.dir") के साथ एक अनुप्रयोग चलाने चालू परियोजना

संबंधित मुद्दे