我正在尝试使用Java Files.find方法来查找一组符合各种条件的文件。我知道可以使用其他方法搜索文件系统,但是我需要文件名(在路径中)和文件属性。
我的代码如下:
import java.io.File
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.attribute.BasicFileAttributes
fun findFile(): String {
val startPath: Path = File("/Foobar").toPath()
Files.find(startPath, 100) { path : Path, attrs : BasicFileAttributes -> true }
return "dummy return value for now"
}
不幸的是,这会生成编译器错误:
错误:(11,11)Kotlin:不能调用以下功能 提供的参数:public final fun find(p0:Path !, p1: Int,p2:(((Path !, BasicFileAttributes!)->布尔值)!, p3:Array <(out) FileVisitOption!>!):流!在java.nio.file.Files中定义 public open fun find(p0:Path !, p1:Int,p2:BiPredicate !, vararg p3:FileVisitOption!):流! 在java.nio.file.Files
中定义
我知道问题的一部分可能是第三个参数应该是BiPredicate<Path, BasicFileAttributes>
,但如果可以使用lambda函数,我真的更喜欢它。我怀疑缺少“!”标记也可能是一个问题-我已经阅读了文档并认为我理解它们的含义,但是我不确定在这种情况下如何/在何处应用它们。