2010-12-01 15 views
8

मैं एक प्रोजेक्ट के लिए एक रिफैक्टरिंग चरण में हूं जिस पर मैं काम कर रहा हूं और मैं फ़ाइल सिस्टम पथों का निर्माण और प्रतिनिधित्व करने के लिए कुछ सुधार करना चाहता हूं। उबंटू, ओएसएक्स और विंडोज 7 पर संगतता सुनिश्चित करने के लिए जावा कोड में सापेक्ष पथों का प्रतिनिधित्व करते समय मुझे क्या विचार करना चाहिए।क्रॉस-प्लेटफ़ॉर्म फ़ाइल पथ निर्माण और प्रतिनिधित्व

वर्तमान में फ़ाइल संदर्भ "MyProject/foo/bar.f" का एक उदाहरण प्राप्त करने के लिए मुझे क्या करना चाहिए की तर्ज पर कोड:

File bar = new File(ProjectDirectory + "/" + FooResourceDirectory + "/" + barName);

ऐसा कई कारणों से गलत लगता है, सर्वोत्तम प्रथाओं में से कुछ क्या हैं?

उत्तर

12

शायद प्रदान की कंस्ट्रक्टर्स का उपयोग बात की इस तरह करना है:

new File(parent, child) 

आपके पास करने के लिए "घोंसला" उन्हें है, लेकिन यह (उदाहरण के लिए एक रास्ता कुछ लेने से बनाया करने के लिए एक समारोह कर इस संभाल करने के लिए तुच्छ है । (File.pathSeparator (उदाहरण के लिए "/") एक पथ के अलग अलग हिस्सों के लिए चरित्र है, और File.separator - File.pathSeparator = File.separator: string...)

File constructors.

+0

File.pathSeparator वह हिस्सा है जो मैं मूल रूप से खोज रहा था, लेकिन मुझे लगता है कि मुझे अंतर्निहित रचनाकारों का उपयोग करने और घोंसले/एक रैपर फ़ंक्शन होने का विचार पसंद है। –

9

सबसे पहले आप File.separator File.pathSeparator के बजाय "/" उपयोग करना चाहिए।

+3

ध्यान मिलते हैं! उदाहरण के लिए ";") चरित्र है विभिन्न पथों को अलग करने के लिए – Ralph

+1

मैं सही कन्स्ट्रक्टर का उपयोग करना पसंद करता हूं: 'नई फ़ाइल (अभिभावक, बच्चा) ' –

+1

@ राल्फ मुझे लगता है कि आपने इसे मिश्रित किया है। "," <-> "/" – lrxw

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