Skip to content

4.9 文件服务类

4.9.1 上传本地文件到机器人

方法名FileManager.Upload(string filePath , FileType ft , bool overWriting = false)
描述上传本地文件到机器人控制器
请求参数filePath : string 需要上传的本地文件的绝对路径
ft : FileType 上传的文件类型
overWriting : bool 是否覆盖机器人控制器中已存在的文件,默认为 false 不覆盖
备注USER_PROGRAM 和 BLOCK_PROGRAM 文件上传只需填写程序名,无需填写后缀
返回值StatusCode: 上传操作执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

4.9.2 下载机器人文件到本地

方法名FileManager.Download(string fileName , FileType ft , string savePath )
描述从机器人控制器下载文件到本地
请求参数fileName : string 要下载的文件名,无需带后缀
ft : FileType 要下载的文件类型
savePath : string 下载文件的本地保存路径
返回值StatusCode: 下载操作执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

4.9.3 删除机器人上的文件

方法名FileManager.Delete(string fileName , FileType ft )
描述删除机器人控制器上的文件
请求参数fileName : string 要删除的文件名,无需带后缀
ft : FileType 要删除的文件类型
返回值StatusCode: 删除操作执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

示例代码

FileManager/UserProgramOperations.cs
cs
using System.Collections.Generic;
using System.IO;
using Agilebot.IR;
using Agilebot.IR.FileManager;
using Agilebot.IR.Types;

public class UserProgramOperations
{
    /// <summary>
    /// 测试用户程序文件的完整操作流程:上传、下载、搜索和删除
    /// </summary>
    public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
    {
        // [ZH] 初始化捷勃特机器人
        // [EN] Initialize the Agilebot robot
        Arm controller = new Arm(controllerIP, useLocalProxy);

        // [ZH] 连接捷勃特机器人
        // [EN] Connect to the Agilebot robot
        StatusCode code = controller.ConnectSync();
        Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");

        if (code != StatusCode.OK)
        {
            return code;
        }

        try
        {
            Console.WriteLine("开始用户程序文件操作测试/Starting User Program File Operations Test");

            // [ZH] 获取测试文件路径
            // [EN] Get test file path
            string file_user_program = GetTestFilePath("test_prog.xml");
            string fileName = "test_prog";
            string save_path = GetTestFilePath("download");

            // [ZH] 上传用户程序文件
            // [EN] Upload user program file
            code = controller.FileManager.Upload(file_user_program, FileType.UserProgram, true);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"用户程序文件上传成功/User Program File Upload Success: {fileName}");
            }
            else
            {
                Console.WriteLine($"用户程序文件上传失败/User Program File Upload Failed: {code.GetDescription()}");
                return code;
            }

            // [ZH] 等待下载
            // [EN] Wait before download
            Thread.Sleep(1000);

            // [ZH] 下载用户程序文件
            // [EN] Download user program file
            code = controller.FileManager.Download(fileName, FileType.UserProgram, save_path);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"用户程序文件下载成功/User Program File Download Success: {fileName}");
            }
            else
            {
                Console.WriteLine($"用户程序文件下载失败/User Program File Download Failed: {code.GetDescription()}");
                return code;
            }

            // [ZH] 搜索用户程序文件
            // [EN] Search user program file
            List<string> results = new List<string>();
            (results, code) = controller.FileManager.Search(fileName);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"用户程序文件搜索成功/User Program File Search Success");
                Console.WriteLine($"搜索结果数量/Search Results Count: {results.Count}");
                foreach (var result in results)
                {
                    Console.WriteLine($"  找到文件/Found File: {result}");
                }
            }
            else
            {
                Console.WriteLine($"用户程序文件搜索失败/User Program File Search Failed: {code.GetDescription()}");
                return code;
            }

            // [ZH] 等待删除
            // [EN] Wait before delete
            Thread.Sleep(1000);

            // [ZH] 删除用户程序文件
            // [EN] Delete user program file
            code = controller.FileManager.Delete(fileName, FileType.UserProgram);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"用户程序文件删除成功/User Program File Delete Success: {fileName}");
            }
            else
            {
                Console.WriteLine($"用户程序文件删除失败/User Program File Delete Failed: {code.GetDescription()}");
                return code;
            }

            Console.WriteLine("用户程序文件操作测试完成/User Program File Operations Test Completed");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
            code = StatusCode.OtherReason;
        }
        finally
        {
            // [ZH] 关闭连接
            // [EN] Close the connection
            StatusCode disconnectCode = controller.Disconnect();
            if (disconnectCode != StatusCode.OK)
            {
                Console.WriteLine(disconnectCode.GetDescription());
                if (code == StatusCode.OK)
                    code = disconnectCode;
            }
        }

        return code;
    }

    /// <summary>
    /// 获取test_files文件夹中文件的路径示例方法
    /// 展示如何获取当前程序目录下的test_files文件夹中的文件路径
    /// </summary>
    private static string GetTestFilePath(string fileName)
    {
        // [ZH] 获取当前程序集的目录
        // [EN] Get current assembly directory
        string? codeFilePath = new System.Diagnostics.StackTrace(true).GetFrame(0)?.GetFileName();
        if (string.IsNullOrEmpty(codeFilePath))
        {
            throw new InvalidOperationException("无法获取当前文件路径/Cannot get current file path");
        }

        string? codeDirectory = Path.GetDirectoryName(codeFilePath);
        if (string.IsNullOrEmpty(codeDirectory))
        {
            throw new InvalidOperationException("无法获取当前目录路径/Cannot get current directory path");
        }

        // [ZH] 构建test_files文件夹路径
        // [EN] Build test_files folder path
        string testFilesDirectory = Path.Combine(codeDirectory, "test_files");
        // [ZH] 构建文件完整路径
        // [EN] Build complete file path
        string filePath = Path.Combine(testFilesDirectory, fileName);
        return filePath;
    }
}

4.9.4 用户提供一个 pattern 查找机器人上符合 pattern 模式的文件

方法名FileManager.Search(string pattern , ref List<string> fl )
描述在机器人控制器上查找符合 pattern 模式的文件
请求参数pattern : string 文件名称匹配模式字符串
fl : ref List<string> 返回的文件列表
返回值StatusCode: 搜索操作执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+