def getListOfImageNames(dir: String): List[String] = {
val names = new File(dir)
names.listFiles.filter(_.isFile)
.map(_.getName).toList
}
def getListOfImages(dir: String): List[String] = {
val files = new File(dir)
files.listFiles.filter(_.isFile)
.filter(_.getName.endsWith(".png"))
.filter(_.getName.endsWith(".jpg"))
.map(_.getPath).toList
}我有一个目录,其中我有不同的照片,小尺寸,大尺寸,我已经设法编写了方法:其中一个只拉出照片的名称,另一个只拉出照片的名称。例如,我现在如何将它们组合到地图中,然后使用以下方法计算它们的分辨率,如果照片大于500x500,则在名称中添加前缀并将其保存在X文件夹中。你有什么想法吗?我没有使用Scala的经验,但我非常喜欢这种语言。
发布于 2020-10-19 01:31:33
正如我所得到的,你需要得到图像名称到图像路径的映射。你可以这样实现它:
def getImagesMap(dirPath: String): Map[String, String] = {
val directory = new File(dirPath)
directory.listFiles.collect{
case file if file.isFile &&
(file.getName.endsWith(".png") ||
file.getName.endsWith(".jpg")) =>
file.getName -> file.getPath
}.toMap
}这里我使用collect函数。它就像是map和filter函数的组合。在collect中有一个模式匹配表达式。如果file匹配模式匹配,它将计算配对创建: file name to file path。否则,文件将被过滤掉。在我使用toMap将Array[(String, String)]转换为Map[String, String]之后。您可以阅读有关collect here的更多信息。
https://stackoverflow.com/questions/64416144
复制相似问题