从Kotlin调用Java Files.find

时间:2018-11-14 14:00:04

标签: java kotlin

我正在尝试使用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函数,我真的更喜欢它。我怀疑缺少“!”标记也可能是一个问题-我已经阅读了文档并认为我理解它们的含义,但是我不确定在这种情况下如何/在何处应用它们。

0 个答案:

没有答案