不能将'File'类型的表达式'destination'作为函数来调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不能将'File'类型的表达式'destination'作为函数来调用相关的知识,希望对你有一定的参考价值。

我正在尝试构建一个函数,如果扩展名与我传递给该函数的扩展名匹配,并且不为空,则该文件会将所有文件从某个目录复制到一个新目录。

我一直收到此错误Expression 'destination' of type 'File' cannot be invoked as a function. The function 'invoke()' is not found

我对如何处理此方法感到有些困惑,因为File可以是正确的文件或目录?因此,就我而言,我将目录传递给该函数,那么如何将所需文件复制到该目录中的新文件中?我是处理文件的新手。

到目前为止,这是我的代码(我只想返回已复制的文件数量。

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

我正在尝试构建一个函数,如果扩展名与我传递给该函数的扩展名匹配,并且它们不为空,则该函数会将所有文件从某个目录复制到一个新目录。我保持...

答案

[在变量名后放置方括号(就像在destination(copiedFiles.toString())中所做的那样),编译器认为您正在尝试像函数一样调用destination对象。换句话说,它尝试调用应存在于任何对象中的invoke方法(您可以阅读有关here的信息),该方法的调用类似于函数。显然,File类没有它。

以上是关于不能将'File'类型的表达式'destination'作为函数来调用的主要内容,如果未能解决你的问题,请参考以下文章

元素隐式具有'any'类型,因为类型的表达式

在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。

input type='file'限制上传文件类型

类型'Queryable'上的通用方法'OrderBy'与提供的类型参数不兼容

运算符'=='不能应用于'char'和'string'类型的操作数

无法将lambda表达式转换为类型object因为他不是委托怎么解决