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