首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >squirrel中的递归目录

squirrel中的递归目录
EN

Stack Overflow用户
提问于 2014-11-27 03:16:24
回答 2查看 205关注 0票数 1

可以在squirrel中检查目录的内容吗?我需要一个文件名列表,包括它们在给定目录及其子目录中的路径。

我正在编写一个在Code::Block中使用的脚本,它使用squirrel作为脚本语言。我看过squirrel标准库,但找不到任何与文件相关的操作。也可以将此任务外包给外部脚本(bash或其他什么),但我不希望这样做。

EN

回答 2

Stack Overflow用户

发布于 2015-09-13 05:51:26

Squirrel没有任何内置的I/O函数。您必须在Squirrel端编写一个,并将该函数公开给C++。

票数 1
EN

Stack Overflow用户

发布于 2017-06-06 22:18:16

用于squrriel的https://github.com/cxong/tinydir

  • Add系统
  1. 下载tinydir表单:

代码语言:javascript
复制
static SQInteger _system_getfiles(HSQUIRRELVM v)
{
    const SQChar *dirPath;
    sq_getstring(v, 2, &dirPath);
    sq_newarray(v,0);

    printf("Get dir %s;\r\n", dirPath);
    tinydir_dir dir;
    tinydir_open(&dir, dirPath);

    while (dir.has_next)
    {
        tinydir_file file;
        tinydir_readfile(&dir, &file);

//        printf("%s\r\n", file.name);
//        if (file.is_dir)
//        {
//            printf("/");
//        }
//        printf("\n");

        if (!file.is_dir)
        {
            sq_pushstring(v, file.name, -1);
            sq_arrayappend(v, -2);
        }

        tinydir_next(&dir);
    }

    tinydir_close(&dir);

//    sq_newarray(v,0);
//    sq_pushstring(v, "test_001.c", -1);
//    sq_arrayappend(v, -2);
//    sq_pushstring(v, "test_002.c", -1);
//    sq_arrayappend(v, -2);
//    sq_pushstring(v, "test_003.c", -1);
//    sq_arrayappend(v, -2);

    return 1;
}
#define _DECL_FUNC(name,nparams,pmask) {_SC(#name),_system_##name,nparams,pmask}
static const SQRegFunction systemlib_funcs[]={
    _DECL_FUNC(getenv,2,_SC(".s")),
    _DECL_FUNC(system,2,_SC(".s")),
    _DECL_FUNC(clock,0,NULL),
    _DECL_FUNC(time,1,NULL),
    _DECL_FUNC(date,-1,_SC(".nn")),
    _DECL_FUNC(remove,2,_SC(".s")),
    _DECL_FUNC(rename,3,_SC(".ss")),
    _DECL_FUNC(getfiles,2,_SC(".s")),
    {NULL,(SQFUNCTION)0,0,NULL}
};
#undef _DECL_FUNC

  1. 测试结果:

代码语言:javascript
复制
sq>local files=getfiles("c:");foreach(file in files){print(file + "\r\n");}
Get dir c:;
devcon64.exe
espacePlugin.log
java14224.reg
MyProject.smp
ns_fp.ocx
pagefile.sys
ScanResult.log
test.log
test1.log
UpdateDocPermission.log
UpdateVMLog.txt
UserAgentData.log
UserData.log

sq>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27157168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档