You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查文件是否存在?FTP文件检查代码无返回值且报错求助

解决FTP文件存在检查的报错问题

看了你的代码和报错信息,这里有几个明确的问题导致了报错和无返回值,我帮你逐一梳理并修正:

1. 方法名大小写错误(核心报错原因)

你提到报错的行Boolean t = fileslist.Exists(),这里犯了Java/Groovy大小写敏感的关键错误:FTPFile类的判断方法是exists()(小写开头),不是Exists(),这个大小写差异会直接抛出NoSuchMethodError。

2. 变量名拼写不一致

你定义的变量是FTPFile[] fileslist = ftpClient.listFiles("/Sample.txt"),但后续遍历却写了filelist.each{...}——这里filelist少了一个s,属于未定义变量,会触发MissingPropertyException,自然也不会有任何返回值。

3. 文件存在性检查的逻辑冗余

当你用ftpClient.listFiles("/Sample.txt")直接传入文件名时,如果文件存在,返回的数组会包含一个FTPFile对象;如果不存在,返回的是空数组。完全不需要遍历数组调用exists(),直接判断数组是否非空即可。

修正后的完整代码

def start() {
    def server = "你的FTP服务器地址"
    def user = "你的FTP用户名"
    def pass = "你的FTP密码"
    
    FTPClient ftpClient = new FTPClient()
    try {
        // 验证连接和登录是否成功
        if (!ftpClient.connect(server)) {
            println "无法连接到FTP服务器"
            return
        }
        if (!ftpClient.login(user, pass)) {
            println "FTP登录失败"
            ftpClient.disconnect()
            return
        }

        ftpClient.enterLocalPassiveMode()
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE)
        
        // 核心:检查文件是否存在
        FTPFile[] targetFiles = ftpClient.listFiles("/Sample.txt")
        boolean isFileExist = targetFiles != null && targetFiles.length > 0
        
        println isFileExist ? "文件/Sample.txt存在" : "文件/Sample.txt不存在"
    } catch (IOException e) {
        println "FTP操作出错:${e.getMessage()}"
        e.printStackTrace()
    } finally {
        // 确保资源释放
        if (ftpClient.isConnected()) {
            try {
                ftpClient.disconnect()
            } catch (IOException e) {
                e.printStackTrace()
            }
        }
    }
}

// 注意:调用要放在函数定义之后,否则会触发未定义方法错误
start()

额外优化建议

  • 函数调用顺序:原代码里start()写在函数定义之前,Groovy从上到下执行代码,此时函数还未加载,会抛出MissingMethodException,一定要把调用放在函数定义之后。
  • 不要忽略返回值:connect()和login()都有布尔返回值,提前验证可以快速定位连接/登录失败的问题,避免后续无效操作。
  • 异常捕获:FTP操作容易出现IO异常(比如网络中断、权限不足),用try-catch-finally包裹能保证资源正确释放,同时捕获错误信息方便排查。

内容的提问来源于stack exchange,提问作者chanbasha sk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:18:32