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没有经验,但我非常喜欢这种语言。
正如我所得到的,您需要获得图像名称到图像路径的映射。你可以这样实现:
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
内部有一个模式匹配表达式。如果文件匹配模式匹配,它将评估对的创建:文件名到文件路径。否则,文件将被过滤。在我使用toMap
将Array[(String, String)]
转换为Map[String, String]
之后。你可以在这里阅读更多关于collect
的信息。