首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于索引中文件的操作

2013-01-01 
关于目录中文件的操作我用C++ Builder想实现以下功能:打开一个文件目录(例如:E:\data),将目录中的文件名、

关于目录中文件的操作
我用C++ Builder想实现以下功能:打开一个文件目录(例如:E:\data),将目录中的文件名、文件逐个加到数据库中,请问如何实现,遍历语句如何写?谢谢!
[解决办法]
参考下面代码



//遍历目录内所有子目录及子目录中的文件,Flag=0仅列举,Flag=1仅删除文件,Flag=2删除所有文件及所有子目录
/*
     //Daniel QQ9562512
    //调用示例
    sDir = ExtractFilePath(sFileName);
    TStrings *StringList = new TStringList();
    ListAllFile(sDir,2,StringList) ;
*/
void   __fastcall   ListAllFile(String Dir,int Flag,TStrings *List)
{
    TSearchRec   sr;
    int   iAttributes   =   0;
    AnsiString fileName,dirStr;
    iAttributes   
[解决办法]
=   faAnyFile;
    if   (   FindFirst(   Dir+"*.*",   iAttributes,   sr)   ==   0   )
    {
        try
        {
            do
            {
                if   (   sr.Name == "." 
[解决办法]
 sr.Name == ".." )
                    continue;
                if   (   sr.Attr == faDirectory )
                {
                    List->Add(Dir+sr.Name+"\");//记录子目录名

                    ListAllFile( Dir+sr.Name+"\",Flag,List );//递归查找并处理子目录中所有文件
                    //此处可以删除文件已经被删除过的空的子目录
                    if(Flag==2)
                    {
                        RemoveDir(Dir+sr.Name+"\");
                    }
                }
                else
                {
                    List->Add(Dir + sr.Name);//记录文件名
                    Application->ProcessMessages();


                    //DeleteFile   (   Dir   +   "\"   +   sr.Name   );//删除文件
                    if(Flag==1 
[解决办法]
 Flag==2)
                    {
                        DeleteFile(Dir + sr.Name);
                    }
                }
                Application->ProcessMessages();
            }while   (   FindNext   (   sr   )   ==   0   );
            //删除文件夹
            if(Flag==2)
            {
                RemoveDir(Dir);
            }
            Application->ProcessMessages();

            FindClose(sr);
        }
        catch(Exception   &e)   
        {
            FindClose(sr);
        }   
    }
}
 



[解决办法]
帮助中搜索 FindFirst 或 FindFirstFile , 有现成的 DEMO 

热点排行