从提供的目录中的文件名创建字符串列表

可能我的问题很明显。想要查看一个目录并创建字符串列表,其中每个字符串代表存储在给定目录中的文件名,例如 List("file1.csv", "file2.csv", "file3.csv")。


我使用创建列表的函数,但它是文件列表(不是字符串)并且包括完整路径(不仅是文件名)。


import java.io.File


def getFileNames(path: String): List[File] = {

  val d = new File(path)

  if (d.exists && d.isDirectory) {

    d

      .listFiles // create list of File

      .filter(_.isFile)

      .toList

      .sortBy(_.getAbsolutePath().replaceAll("[^a-zA-Z0-9]",""))

  } else {

    Nil // return empty list

  }

}


慕尼黑8549860
浏览 66回答 2
2回答

侃侃尔雅

getFileNames尝试更改to的返回类型并像这样List[String]使用map(_.getName)def getFileNames(path: String): List[String] = {    val d = new File(path)    if (d.exists && d.isDirectory) {      d        .listFiles // create list of File        .filter(_.isFile)        .toList        .sortBy(_.getAbsolutePath().replaceAll("[^a-zA-Z0-9]",""))        .map(_.getName)    } else {      Nil // return empty list    }  }确保.map(_.getName)是链中的最后一个,即在 之后sortBy。更好的文件会将其简化为import better.files._import better.files.Dsl._val file = file"."ls(file).toList.filter(_.isRegularFile).map(_.name)

拉风的咖菲猫

你可以使用 getName 方法正如 Tomasz 指出的那样,过滤器和地图可以组合起来收集如下def&nbsp;getFileNames(path:&nbsp;String):&nbsp;List[String]&nbsp;=&nbsp;{ &nbsp;&nbsp;val&nbsp;d&nbsp;=&nbsp;new&nbsp;File(path)&nbsp;&nbsp;if&nbsp;(d.exists&nbsp;&&&nbsp;d.isDirectory)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;d &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.listFiles&nbsp;//&nbsp;create&nbsp;list&nbsp;of&nbsp;File &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect{&nbsp;case&nbsp;f&nbsp;if&nbsp;f.isFile&nbsp;=>&nbsp;f.getName&nbsp;}//&nbsp;gets&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;file&nbsp;&nbsp;<-- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toList &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sortBy(_.getAbsolutePath().replaceAll("[^a-zA-Z0-9]","")) &nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Nil&nbsp;//&nbsp;return&nbsp;empty&nbsp;list &nbsp;&nbsp;} }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java