2011-12-24 12 views
27

में निर्देशिका से फ़ाइलों को पढ़ना स्केल में निर्देशिका में फ़ाइलों (या उदाहरण के लिए सभी * .txt फ़ाइलों) की सूची कैसे प्राप्त करें I स्रोत वर्ग मदद नहीं करता है।स्कैला

उत्तर

44
new java.io.File(dirName).listFiles.filter(_.getName.endsWith(".txt")) 
2

अभी के लिए, आपको ऐसा करने के लिए जावा पुस्तकालयों का उपयोग करना चाहिए।

13

जावा फ़ाइल क्लास वास्तव में आपको चाहिए, हालांकि निर्देशिकाओं पर पुनरावृत्ति के लिए कुछ स्केल भलाई को जोड़ना आसान है।

import scala.collection.JavaConversions._ 

for(file <- myDirectory.listFiles if file.getName endsWith ".txt"){ 
    // process the file 
} 
+1

मैंने दो छोटे टाइपो को संपादित करने की कोशिश की, लेकिन चूंकि यह केवल दो वर्ण हैं, यह मुझे नहीं जाने देगा। पैकेज का नाम 'संग्रह' है, और आप अपने 'के लिए' में एक समापन कोष्ठक खो रहे हैं। Java.nio – Eduardo

15

JDK7 संस्करण, नई DirectoryStream वर्ग का उपयोग कर रहा है:

import java.nio.file.{Files, Path} 
Files.newDirectoryStream(path) 
    .filter(_.getFileName.toString.endsWith(".txt")) 
    .map(_.toAbsolutePath) 
एक स्ट्रिंग के बजाय

, यह एक पथ है, जो उस पर काम के तरीकों का भार है देता है, 'relativize' और 'की तरह सब-पाथ '।

ध्यान दें कि जावा संग्रहों के साथ इंटरऑप को सक्षम करने के लिए आपको import scala.collection.JavaConversions._ आयात करने की भी आवश्यकता होगी।

+0

+1 मुझे नहीं पता कि यह पिछले संस्करणों में काम करता है, लेकिन अब मुझे त्रुटि मिलती है 'मान नक्शा java.nio.file.DirectoryStream [java.nio.file का सदस्य नहीं है। पथ] ' – jasonoriordan

+1

का उपयोग करने के लिए – rumtscho

+0

मुझे जावा 8 –