从所有目录的列表转到Scala中所有文件的列表

时间:2017-06-02 18:00:49

标签: scala recursion functional-programming

我成功创建了所有目录的列表,并且我有一个方法可以列出列表中每个目录的所有文件,但由于某种原因,我列出计算机上所有文件的方法会引发空指针异常。这是我的代码:

def getFileList(directoryName: String): List[String] = {
    ( new File(directoryName) ).listFiles.filter(_.isFile).map(_.getAbsolutePath).toList
}
def getAllDirs(dir: String): List[String] = {
    val dirList = getDirList( dir )
    @tailrec
    def loop( directories: List[ String ], accList: List[ String ] ): List[ String ] = {
        if ( directories.isEmpty ) accList
        else loop( directories.tail, accList ++: getDirList( directories.head ) )
    }
    loop( dirList, List[ String ]() )
}
def getAllFiles(dir: List[String]): List[String] = dir.flatMap(x => getFileList(x))

这是我尝试失败的替代方法:

def getAllFiles(directories: List[String]): List[String] = {
    def loop(dir: List[String], accList: List[String]): List[String] = {
        if (dir.isEmpty) accList
        else loop(dir.tail, getFileList(dir.head)) ++: accList
    }
    loop( directories, List[String]() )
} // END getFullFileList

这是另一个

0 个答案:

没有答案