2017-05-28 1 views
-1

Ich versuche, eine Liste aller Verzeichnisse und eine Liste aller Dateien auf meinem Computer mit Scala zu bekommen. Im Folgenden sind zwei verschiedene Möglichkeiten, die ich versucht habe, das Problem zu lösen. Warum bekomme ich eine Nullzeigerausnahme?Holen Sie sich eine Liste aller Verzeichnisse und eine Liste aller Dateien auf dem Computer mit Scala.

def fullDirList(directories: Array[String]): Array[String ] = { 
    directories.foldLeft(Array[String]()){ (x, y) => x ++: fullDirList(getSubDirList(y)) 
} 

def getFullDirList(directories: Array[String]): Array[String] = { 
    def loop(dir: Array[String], accDir: Array[String]): Array[String] = { 
     if (dir.isEmpty) accDir 
     else loop(dir.tail, accDir ++: getFullDirList(getSubDirList(dir.head))) 
    } // END loop() 
    loop(directories, Array[String]()) 
} // END getFullDirList() 

def getSubDirList(directoryName: String): Array[String] = { 
    (new File(directoryName)).listFiles.filter(_.isDirectory).map(_.getName) 
} 

def getFileArray(directoryName: String): Array[String] = { 
    (new File(directoryName)).listFiles.filter(_.isFile).map(_.getAbsolutePath) 
} 
+0

Es wäre einfacher zu helfen, wenn Sie Informationen zum Speicherort der Ausnahme angeben. – Zernike

Antwort

0

Hier ist die Lösung, die ich gefunden habe. Obwohl ich mir sicher bin, dass Sie das mit foldRight machen können, bin ich nur froh, dass die Lösung funktioniert.

def getDirList(directoryName: String): Array[String] = { 
    (new File(directoryName)).listFiles.filter(_.isDirectory).map(_.getAbsolutePath) 
} 
def getAllDirs(dir: String): Array[String] = { 
    val dirList = getDirList(dir) 
    def loop(directories: Array[String], accList: Array[String]): Array[String] = { 
     if(directories.isEmpty) accList 
     else loop(directories.tail, accList ++: getDirList(directories.head)) 
    } 
    loop(dirList, Array[String]()) 
} 
+0

Diese Antwort ist falsch. Ich wusste viel weniger zurück, als ich versuchte, dieses Programm zu machen. – Xander

Verwandte Themen