Ответ зависит от того, что вы хотите сделать, если папка не существует или пуста. В этом примере я просто буду считать, что количество страниц в этом случае равно нулю.
Вот пример использования современного Java Файлового API и преобразования структур Java в коллекции Scala. Он будет работать на Scala 2.13, но вы можете вместо этого импортировать scala.collection.JavaConverters._
, если работаете на предыдущих версиях Scala.
import java.io.File
import java.nio.file._
import scala.jdk.CollectionConverters._
// This object is provided by your library, I only defined it so my example can compile
object PDFDocument {
def load(f: File) = new { def getNumberOfPages: Int = 1 }
}
val dir = Paths.get("/your/path/here")
val stream = if (Files.exists(dir)) Files.newDirectoryStream(dir, "*.pdf").asScala.map(_.toFile) else Nil
val pages = stream.foldLeft(0)(_ + PDFDocument.load(_).getNumberOfPages)
Последняя строка, использующая foldLeft
, просто фантастическая ( потенциально немного более эффективный) способ написания stream.map(...).sum
, поэтому вы можете предпочесть более поздний, если вы или ваша команда не привыкли к fold
идиомам.