首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取给定dir及其子目录中所有文件的路径和文件名。

获取给定dir及其子目录中所有文件的路径和文件名。
EN

Stack Overflow用户
提问于 2009-01-19 04:06:44
回答 1查看 3.2K关注 0票数 0

一段时间前我就收到了这段代码。我终于有时间测试它(通过一些修改将文件放在另一个地方).

代码语言:javascript
复制
void AddFiles(AnsiString path/*, TDataSet *DataSet*/)
{
TSearchRec sr;
int f;
    f = FindFirst(path+"\\*.*", faAnyFile, sr);
    while( !f )
    {
        if(sr.Attr & faDirectory)
        {
                if(sr.Name != "."   &&   sr.Name != "..")
                {
                        path.sprintf("%s%s%s", path, "\\", sr.Name);
                        AddFiles(path/*, DataSet*/);
                }
        }
        else
        {
                Form1->ListBox1->Items->Add(path+ "\\"+ sr.Name);
                //DataSet->Append();
                //DataSet->FieldByName("Name")->Value = sr.Name;
                /* other fields ... */
                //DataSet->Post();
        }
        f = FindNext(sr);
    }
    FindClose(sr);
}

它不能正常工作。一开始就搞混了..。

真正的结构..。

根根\根根\根根

就这样搞砸了..。

根\底根\根\底根

最后,它停止包含根文件夹或子文件夹,而“路径”只包含子文件夹(没有根文件夹)。

对于可使用的全路径文件名来说,这是完全无用的.

所以,你能告诉我代码哪里出错了吗.就如何在dir及其所有子目录中获取完整路径文件名给了我一些建议。

我希望它尽可能的基本。也就是说,没有不寻常的高级c++特性。建设者可以调试的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-01-19 04:32:05

在这里,将每个子路径附加到当前路径:

代码语言:javascript
复制
path.sprintf("%s%s%s", path, "\\", sr.Name);
AddFiles(path/*, DataSet*/);

为组合路径使用一个新变量,这样您就不会弄乱目录中其余的文件/dirs仍然需要的path变量:

代码语言:javascript
复制
AnsiString subpath;
subpath.sprintf("%s%s%s", path, "\\", sr.Name);
AddFiles(subpath/*, DataSet*/);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/456504

复制
相关文章

相似问题

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