2014-09-25 13 views
9

मैं अपने स्कैला प्रोजेक्ट से कुछ फाइलें पढ़ने की कोशिश कर रहा हूं, और यदि मैं इसका उपयोग करता हूं: java.io.File(".").getCanonicalPath() मुझे लगता है कि मेरी वर्तमान निर्देशिका उनसे बहुत दूर है (बिल्कुल जहां मैंने स्कैला ग्रहण स्थापित किया है)। तो मैं अपनी प्रोजेक्ट की जड़ में वर्तमान निर्देशिका कैसे बदल सकता हूं, या मेरे प्रोजेक्ट का मार्ग प्राप्त कर सकता हूं? मैं वास्तव में अपनी इनपुट फाइलों के लिए एक पूर्ण पथ नहीं चाहता हूं।मैं स्कैला में परियोजना पथ कैसे प्राप्त कर सकता हूं?

val PATH = raw"E:\lang\scala\progfun\src\examples\" 
    def printFileContents(filename: String) { 
    try { 
     println("\n" + PATH + filename) 
     io.Source.fromFile(PATH + filename).getLines.foreach(println) 
    } catch { 
     case _:Throwable => println("filename " + filename + " not found") 
    } 
    } 

    val filenames = List("random.txt", "a.txt", "b.txt", "c.txt") 
    filenames foreach printFileContents 

उत्तर

11
  1. src/main/resources/<packageName> के लिए अपनी फ़ाइलें जोड़ें जहां <packageName> अपने वर्ग पैकेज है।
  2. बदलें लाइन val PATH = getClass.getResource("").getPath
+0

ठीक है, मेरे मामले में (विंडोज 8 पर) वापस लौटाया गया पथ /bin//जो वही है जो मैं चाहता था। धन्यवाद! –

0

एक और वैकल्पिक हल पथ आप एक उपयोगकर्ता पर्यावरण चर में जरूरत रखा, और sys.env से कॉल करने के लिए है या System.getenv ((अपवाद अगर विफलता देता है) विफलता अगर शून्य हो जाती है), उदाहरण के लिए val PATH = sys.env("ScalaProjectPath") लेकिन समस्या यह है कि यदि आप प्रोजेक्ट को ले जाते हैं तो आपको वेरिएबल को अपडेट करना होगा, जिसे मैं नहीं चाहता था।

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

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