2010-09-02 15 views
10

पर कनवर्ट करें क्या एक यूआरएल को परिवर्तित करने का कोई आसान तरीका है जिसमें दो-बाइट वर्णों को पूर्ण पथ में शामिल किया गया है?URL को AbsolutePath

कारण मैं पूछता हूँ मैं इस तरह के संसाधनों को खोजने के लिए कोशिश कर रहा हूँ है:

URL url=getClass().getResources("/getresources/test.txt"); 
String path=url.toString(); 
File f=new File(path); 

प्रोग्राम फ़ाइल नहीं मिल रहा। मुझे पता है कि पथ में सभी रिक्त स्थानों के लिए '% 20' है जिसे मैं परिवर्तित कर सकता हूं लेकिन मेरी असली समस्या यह है कि मैं एक जापानी ओएस का उपयोग कर रहा हूं और जब प्रोग्राम जार फ़ाइल जापानी पाठ के साथ निर्देशिका में है (उदाहरण के लिए デ ス ク ト ッ プ) मुझे URL-encoding मिलता है निर्देशिका का नाम, इस तरह की:

% E3% 83% 87% E3% 82% B9% E3% 82% वायुसेना% E3% 83% 88% E3% 83% 83% E3% 83% 97

मुझे लगता है कि मैं यूटीएफ -8 बाइट कोड प्राप्त कर सकता हूं और फ़ाइल को खोजने के लिए इसे उचित वर्णों में परिवर्तित कर सकता हूं, लेकिन मुझे आश्चर्य है कि ऐसा करने का कोई आसान तरीका है या नहीं। किसी भी तरह की सहायता का स्वागत किया जाएगा।

nt

+0

नहीं है यही कारण है कि वे पात्रों के प्रतिनिधित्व से बच गए हैं। वे वैध मूल्य हैं। आपका कोड खंड क्यों काम नहीं करता है क्योंकि क्लास.get स्रोत और फ़ाइल में विभिन्न रूट रिक्त स्थान हैं। –

+0

क्या कक्षा है जिसे मैं पथ को सामान्य पठनीय वर्णों में बदलने के लिए उपयोग कर सकता हूं? – nite

उत्तर

24
URL url=getClass().getResource("/getresources/test.txt"); 
File f=new File(url.toURI()); 
+0

thx, जैसा कि मैं नीचे कह रहा था, यह केवल नेटबीन में काम करता है। जब मैं ऐप संकलित करता हूं तो मैं एक त्रुटि में चलाता हूं। – nite

+0

मोरित्ज़ ने इसे प्राप्त किया। एक फ़ाइल ऑब्जेक्ट किसी संग्रहीत संसाधन के लिए URL का उपयोग करके तत्काल नहीं हो सकता है। आपको इसे स्ट्रीम करना होगा। –

+2

को अपवाद मिला "यूआरआई पदानुक्रमित नहीं है" – Igal

3

File एक निर्माता इस मामले के लिए प्रकार java.net.URI का एक तर्क ले जा रहा है: "। कचरा"

File f = new File(url.toURI()); 
+0

मैंने कोशिश की। जब मैं नेटबीन्स में प्रोग्राम चलाता हूं तो यह काम करता है, लेकिन जब कोई निर्माण होता है तो यह काम नहीं करता है। – nite

+4

मुझे जो त्रुटि मिल रही है वह है: java.lang.IllegalArgumentException: यूआरआई पदानुक्रमित नहीं है – nite

+1

क्या यह हो सकता है कि आप अपने ऐप को '.jar' फ़ाइल में संसाधनों के साथ बांट रहे हों? आप उस 'यूआरआई' से 'फ़ाइल' ऑब्जेक्ट नहीं बना सकते हैं, क्योंकि संसाधन फ़ाइल नहीं है बल्कि उस '.jar' में एक प्रविष्टि है। – Moritz