File 表达式';目的地';类型为';文件';不能作为函数调用
我试图构建一个函数,它将所有文件从某个目录复制到一个新目录,如果它们的扩展名与我传递给该函数的扩展名匹配,并且它们不是空的 我一直收到这样的错误File 表达式';目的地';类型为';文件';不能作为函数调用,file,kotlin,copy,File,Kotlin,Copy,我试图构建一个函数,它将所有文件从某个目录复制到一个新目录,如果它们的扩展名与我传递给该函数的扩展名匹配,并且它们不是空的 我一直收到这样的错误表达式'destination'类型'File'不能作为函数调用。未找到函数“invoke()” 我对如何处理这个问题有点困惑,因为文件可以是文件,也可以是目录,对吗?在我的例子中,我将一个目录传递给该函数,那么如何将所需文件复制到该目录中的新文件中呢?我不熟悉处理文件 这是我到目前为止的代码(我只想返回复制的文件数量) 当您将括号放在变量名后面时(就像
表达式'destination'类型'File'不能作为函数调用。未找到函数“invoke()”
我对如何处理这个问题有点困惑,因为文件可以是文件,也可以是目录,对吗?在我的例子中,我将一个目录传递给该函数,那么如何将所需文件复制到该目录中的新文件中呢?我不熟悉处理文件
这是我到目前为止的代码(我只想返回复制的文件数量)
当您将括号放在变量名后面时(就像您在目标(copiedFiles.toString())
中所做的那样),编译器认为您试图像调用函数一样调用目标
对象。换句话说,它尝试调用应该存在于任何对象中的invoke
方法(您可以阅读该方法),该对象像函数一样被调用。显然,File
类没有它
也许,你错过了一些方法调用?类似于目的地。
克隆(copiedFiles.toString())
(我不知道您在这里真正需要什么方法)
fun copyFiles(source: File, destination: File, fileExtension: String = ""): Int {
var copiedFiles =0;
if(!source.isDirectory() || !destination.isDirectory() return 0
source.walk().forEach {file->
if(file.length().toInt() == 0) return@forEach
if(fileExtension !="" && file.extension != fileExtension) return@forEach
file.copyTo(destination(copiedFiles.toString()))
copiedFiles++
}
return copiedFiles
}