关于目录中文件的操作
我用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