2011-05-25 5 views
27

क्या बाहरी निर्भरताओं का उपयोग किये बिना क्लासपाथ से फ़ाइल पढ़ने के लिए स्कैला में एक-लाइनर है, उदा। कॉमन्स-कब?क्लासपाथ से बाहरी निर्भरताओं के बिना फ़ाइल को कैसे पढ़ा जाए?

IOUtils.toString(getClass.getClassLoader.getResourceAsStream("file.xml"), "UTF-8") 
+1

किस तरह से बेहतर है? – Geo

+2

कॉमन्स-आईओ पर निर्भरता या क्लासलोडर का उपयोग न करके। शायद स्प्रिंग "क्लासलोडर: ..." – mbdev

उत्तर

54
val text = io.Source.fromInputStream(getClass.getResourceAsStream("file.xml")).mkString 
+1

सिंटैक्स का समर्थन करके यह "क्लासपाथ से फ़ाइल को पढ़ने" का जवाब नहीं देता है भाग – mbdev

+0

@mbdev: – dacwe

+2

अपडेट किया गया नोट यह फ़ाइल फ़ाइल हैंडल को file.xml खोलने के लिए छोड़ देगा, स्ट्रिंग के बाद भी उत्पादन किया गया है। – pdxleif

0

Read entire file in Scala? @ डैनियल-Spiewak में जो मैं व्यक्तिगत रूप से @ dacwe की प्रतिक्रिया की तुलना में बेहतर की तरह एक सा अलग दृष्टिकोण का प्रस्ताव रखा।

// scala is imported implicitly 
import io.Source._ 

val content = fromInputStream(getClass.getResourceAsStream("file.xml")).mkString 

मुझे आश्चर्य है कि यह अभी भी एक लाइनर है या नहीं?

4

यदि फ़ाइल संसाधन फ़ोल्डर में है (तो यह कक्षा पथ की जड़ में होगी), आपको लोडर क्लास का उपयोग करना चाहिए कि यह कक्षा पथ की जड़ में भी है।

val content: String = scala.io.Source.fromInputStream(getClass.getClassLoader.getResourceAsStream("file.xml")).mkString 

स्काला के अन्य संस्करणों में, स्रोत वर्ग अन्य classpath

यदि आप केवल चाहते हैं में हो सकता है:

इस कोड लाइन आप सामग्री (स्केला 2.11 में) प्राप्त करने के लिए चाहते हैं संसाधन प्राप्त करने के लिए:

val resource = getClass.getClassLoader.getResource("file.xml") 
संबंधित मुद्दे