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