获取路径和所有文件的文件名在给定的目录和子目录及其
-
19-08-2019 - |
题
我得到这个代码而回。我终于可以测试它(含部分变更以将文件放在不同的地方)......
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);
}
它不能正常工作。在开始的时候被混合起来..
的...真实结构
根 根\ subdir1 根\ subdir2 根\ subdir3
得到弄糟这样...
根 根\ subdir1 根\ subdir1 \ subdir2 根\ subdir1 \ subdir2 \ subdir3
和最终停止包括根或子\子文件夹和“路径”只包含一个子文件夹(无它的根文件夹)
这是用于aquring可用全路径的文件名完全没用。
这样的或者您能告诉我的代码是怎么了...... 或给我如何获得完整的路径文件名在DIR一些建议和所有其子目录。
我希望它是尽可能碱性。即,没有罕见高级C ++特性。东西,助洗剂小白很可能是能够进行调试。
解决方案
下面您附加每个子路径与当前路径:
path.sprintf("%s%s%s", path, "\\", sr.Name);
AddFiles(path/*, DataSet*/);
使用新的变量组合的路径,这样你就不会弄乱你还需要为这些文件的其余path
变量/目录显示目录:
AnsiString subpath;
subpath.sprintf("%s%s%s", path, "\\", sr.Name);
AddFiles(subpath/*, DataSet*/);
不隶属于 StackOverflow