किसी भी कारण से, मुझे कभी-कभी कुछ फ़ाइलों को पढ़ने के लिए जावा प्रोग्राम में विंडोज पर मौजूदा उपयोगकर्ता के माय दस्तावेज़ फ़ोल्डर को खोजने की आवश्यकता होती है। लेकिन जहां तक मैं कह सकता हूं, ऐसा करने का कोई तरीका नहीं है जो गंभीर रूप से त्रुटिपूर्ण नहीं है।जावा के साथ विंडोज़ पर उपयोगकर्ता के मेरे दस्तावेज़ फ़ोल्डर को खोजने के लिए उचित तरीका?
पहला गलत तरीका: System.getProperty ("user.home");
यह काम नहीं करेगा क्यों:
- यह केवल \ उपयोगकर्ता नाम \ फ़ोल्डर रिटर्न; मुझे दस्तावेज़ फ़ोल्डर प्राप्त करने के लिए अंत में "\ दस्तावेज़ \" जोड़ना होगा ... और यह केवल अंग्रेज़ी में काम करता है।
- Sun bugs 6519127 और 4787931. जावा को डेस्कटॉप पर खोजने के लिए डेस्कटॉप को एक बहिष्कृत रजिस्ट्री कुंजी * पढ़कर विंडोज़ पर उपयोगकर्ता होम फ़ोल्डर मिल जाता है; इस विधि में कई ज्ञात समस्याएं हैं जो आसानी से पूरी तरह से गलत फ़ोल्डर को वापस करने का कारण बनती हैं। बग 3.75 साल और 8 साल पुरानी हैं, बिना किसी फिक्स के।
दूसरा गलत तरीका: उपयोगकर्ता के व्यक्तिगत फ़ोल्डर को पाने के लिए रजिस्ट्री-रीडिंग प्रोग्राम का उपयोग करना, जो मेरा दस्तावेज़ है (लेकिन i18n'd)।
यह क्यों काम नहीं करेगा:
हालांकि यह केवल अंग्रेज़ी की समस्या को हल करता है, यह अभी भी एक ही बहिष्कृत रजिस्ट्री क्षेत्र का उपयोग कर रहा है, इसलिए बग अभी भी लागू होते हैं।
बहिष्कृत रजिस्ट्री कुंजी एक देशी कॉल (SHGetKnownFolderPath) का उपयोग करने के लिए कहती है जो मैं स्पष्ट रूप से जावा से नहीं कर सकता।
तीसरे गलत तरीके:
JFileChooser fr = new JFileChooser();
FileSystemView fw = fr.getFileSystemView();
File documents = fw.getDefaultDirectory();
क्यों यह काम नहीं करेगा: यह बहुत अच्छा काम करता है!
जब यह नहीं होता है। जबकि मेरे पास एक प्रोग्राम था जो पृष्ठभूमि में खुला और चल रहा था, मैंने डायरेक्टएक्स गेम खोला (फॉलआउट: न्यू वेगास)। जावा प्रोग्राम तुरंत को बिना स्टैक ट्रेस के समाप्त कर दिया गया। हमेशा पुनरुत्पादित करें (मेरे लिए उस खेल पर, और कौन जानता है और क्या)। सूर्य बग नहीं मिला #।
तो जावा से, विंडोज़ पर, उपयोगकर्ता के दस्तावेज़ फ़ोल्डर को खोजने के लिए कोई तरीका है, जिसमें ज्ञात समस्याएं नहीं हैं?
(यह एक अच्छा बड़ा सवाल है।)
* (कुंजी है "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ एक्सप्लोरर \ शैल फ़ोल्डर")
एक ही रूप में [लगाने के लिए कैसे "मेरे दस्तावेज़" फ़ोल्डर ] (http://stackoverflow.com/questions/1503555/how-to-find-my- दस्तावेजों-फ़ोल्डर)। यह WinGoldersjava, SHGetSpecialFolderPath के आसपास एक जेएनआई रैपर का उल्लेख करता है। चूंकि आप विंडोज-विशिष्ट कार्यक्षमता का उपयोग कर रहे हैं, इसलिए जेएनआई ठीक होना चाहिए। –
क्या आपने वास्तव में इन क्रैश को कोड स्निपेट में तीसरे तरीके से अलग किया था? चूंकि इस विधि का इस्तेमाल स्विंग्स ओपन फाइल डायलॉग (जेफाइलचुओसर) द्वारा किया जाता है, इसलिए ऐसा लगता है कि बहुत सारे जावा ऐप्स इससे पीड़ित होंगे? –
http://stackoverflow.com/questions/1503555/how-to-find-my- दस्तावेज़- फ़ोल्डर –