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

如何从FTP服务器获取并打印文件列表?请求代码检查

FTP文件列表读取代码问题排查与优化

我帮你检查了这段Groovy代码,发现几个需要修正的问题,同时给你优化后的版本:

存在的问题

  • 函数调用顺序错误:你先调用了start()再定义这个函数,Groovy执行时会找不到这个方法,直接报错。
  • 资源泄漏风险:return fileslist;写在ftpClient.disconnect()前面,导致断开连接的代码永远不会执行,FTP连接会一直占用资源。
  • 未定义的变量:server、user、pass这三个关键变量没有看到赋值,运行时会抛出变量未定义的异常。
  • 缺少文件打印逻辑:你的代码返回了文件列表,但没有实现打印输出的逻辑,没法看到具体的文件详情。

优化后的代码

// 先定义所需变量,替换成你的实际FTP信息
def server = "your-ftp-server-address"
def user = "your-username"
def pass = "your-password"

// 先定义函数再调用
def start() {
    def ftpClient = new FTPClient()
    try {
        ftpClient.connect(server)
        println(ftpClient.replyString)
        ftpClient.login(user, pass)
        ftpClient.enterLocalPassiveMode()
        
        def fileslist = ftpClient.listFiles("/")
        // 遍历文件列表并打印详细信息
        fileslist.each { file ->
            def details = file.isDirectory() ? "<DIR>" : file.size()
            println("${file.timestamp.format('MM-dd-yy hh:mmaa')} ${details} ${file.name}")
        }
        return fileslist
    } finally {
        // 确保无论是否异常都能断开连接
        if (ftpClient.isConnected()) {
            ftpClient.disconnect()
        }
    }
}

// 调用函数
start()

修正说明

  1. 调整了函数定义和调用的顺序,确保调用时函数已经存在
  2. 使用try-finally块包裹FTP操作,保证即使出现异常,连接也能被正确关闭,避免资源泄漏
  3. 添加了变量定义的示例,你需要替换成自己的FTP服务器信息
  4. 增加了文件列表的遍历打印逻辑,区分文件和目录,输出格式和你提供的示例一致

你提供的输出示例

04-03-18 05:20PM 4 Autoplus.txt
04-03-18 08:13PM 19 Autoplus6.txt
03-30-18 06:36PM

sample Re...

内容的提问来源于stack exchange,提问作者Raj s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:38:14