2012-09-27 11 views
6

में एक फ़ाइल के वास्तविक पथ जाओ मैं उस तरह एक फ़ाइल प्राप्त करें:एक जावा वर्ग

String myFile = "D:/dev/workspace/MyProject/WebContent/stats/stats.csv"; 
File statsFile = new File(myFile); 

लेकिन मैं केवल stats/stats.csv के रूप में रिश्तेदार पथ करना चाहते हैं। मैं अपने कोड में पूरा पथ लिखना नहीं चाहता हूं।

एक सर्वलेट में, मैं इसे इस तरह कार्य करें:

File statsFile = new File(this.getServletContext().getRealPath("/") + "stats/stats.csv"); 

लेकिन यहाँ यह एक सर्वलेट में नहीं है। तो जावा क्लास में समकक्ष तरीका क्या है?

उत्तर

2

आपको इसे क्लास्स्पैट में रखना चाहिए और इसे getResourceAsStream() का उपयोग करके InputStream से पढ़ा जाना चाहिए। यह फ़ाइल तक पहुंचने का पथ-स्वतंत्र तरीका है।

+0

वह कहता है कि वह इसे सर्वलेट – Razvan

+0

में उपयोग नहीं करना चाहता है तो इसे रनटाइम से प्राप्त करें। – duffymo

+1

कोई इसे 'SomeApplicationClass.class.getResourceAsStream() ' –

0
String basePath = "D:/dev/workspace/MyProject/WebContent"; 
String absolutePath = "D:/dev/workspace/MyProject/WebContent/stats/stats.csv"; 

String relativePath = new File(basePath).toURI(). 
         relativize(new File(absolutePath).toURI()).getPath(); 

System.out.println(relativePath); // stats/stats.csv 

basePath पथ है, जो के सापेक्ष आप Relative Path प्राप्त करना चाहते है।

+0

वास्तव में, मैं इसे लिखने के बिना 'बेसपाथ' खोजने का एक तरीका खोजता हूं। – Emilie

+0

@ जिम .. फिर आपका काम अभी भी कम हो गया है .. मुझे अपनी परियोजना में से एक पर काम करते समय भी एक ही समस्या का सामना करना पड़ा .. तब केवल मुझे पता चला कि मैं यह कर सकता हूं .. –

0

मुझे एक समाधान मिला। मैं अपने जेएसपी का उपयोग File statsFile = new File(this.getServletContext().getRealPath("/") + "stats/stats.csv") का उपयोग करने के लिए कर सकता हूं और फिर मेरी कक्षा में statsFile पास कर सकता हूं।

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