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

GeneXus C#环境下如何通过SFTP实现文件列举与删除操作

GeneXus 17 U9(C#环境)SFTP列目录、删文件实现方法

你查阅公开文档没找到对应功能说明,是因为这两个方法属于SFTP模块内置未写入公开文档的方法,在C#生成环境下可直接调用,无需额外引入依赖。

核心功能实现

  • 列举指定文件夹内文件
    连接SFTP服务器成功后,调用SFTP客户端对象的GetFileList()方法,传入目标文件夹的远程绝对路径作为参数,返回值为该路径下所有文件、子目录名称的字符串集合,基础调用示例:

    // 前置逻辑:已完成SFTP客户端参数配置、成功建立连接
    &RemotePath = "/data/upload/report"
    &FileNames = &SftpClient.GetFileList(&RemotePath)
    for &fileName in &FileNames
        // 遍历处理每个条目,可拼接路径做后续下载、删除操作
    endfor
    

    如果需要区分返回结果里的文件和子目录,可搭配GetFileInfo()方法获取条目类型属性做过滤。

  • 删除服务器上的文件
    连接成功后调用SFTP客户端对象的DeleteFile()方法,传入待删除文件的远程绝对路径作为参数即可,方法无返回值,执行成功即完成删除,执行出错会抛出和其他SFTP操作一致的权限、路径不存在类异常,基础调用示例:

    &TargetFilePath = "/data/upload/report/2023_old.pdf"
    &SftpClient.DeleteFile(&TargetFilePath)
    

注意:上述两个方法为GX17 U9 C#环境下的内置可用方法,不属于公开文档承诺的稳定API,后续升级GeneXus大版本前需要做兼容性验证。

备选兼容方案

如果担心未文档化方法的版本兼容问题,可以直接在C#环境下引入成熟的SFTP原生库,通过GeneXus外部对象封装自定义SFTP操作逻辑,除列目录、删文件外,还可按需扩展重命名文件、修改权限、创建目录等更多原生模块未覆盖的功能,逻辑完全自主可控。

使用提示

  • 执行删除操作前建议先校验目标文件是否存在,避免因文件不存在抛出异常中断业务流程
  • 所有操作都需要在SFTP连接成功的上下文中执行,操作完成后按原有逻辑释放连接即可

内容的提问来源于stack exchange,提问作者Falchini Cesar Adolfo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:51:32