方式1:
void ImageTree::addFolderImages(QString path)
{
//判断路径是否存在
QDir dir(path)
if(!dir.exists())
{
return
}
dir.setFilter(QDir::Files | QDir::NoSymLinks)
QFileInfoList list = dir.entryInfoList()
int file_count = list.count()
if(file_count <= 0)
{
return
}
QStringList string_list
for(int i=0i
{
QFileInfo file_info = list.at(i)
QString suffix = file_info.suffix()
if(QString::compare(suffix, QString("png"), Qt::CaseInsensitive) == 0)
{
QString absolute_file_path = file_info.absoluteFilePath()
string_list.append(absolute_file_path)
}
}
}
分析:遍历文件的下一层,对于系统而言包括:文件夹、文件、快捷方式,使用setFilter即可过滤。通过entryInfoList则可以获念携烂取过滤后所得到的文件夹下的文件信息列表,遍历文件通过 *** 作QFileInfo可隐键得到所需的文件详细信息仔漏(大小、类型、后缀等)。
#include <stdio.h> #include <dos.h> #include <errno.h> #include <io.h> #include <dirent.h> #include <dir.h> #include <string.h> #include <sys\stat.h> #include "pm03a.h" void main(int argc,char* argv[]) { //printf("Number %d\n"做陆,ConfirmFileAttrib(argv[1])) GetDirectory(argv[1]) printf("\nSearch Over.\n") } //------------------------------------------------------------------ //pm03a.h //------------------------------------------------------------------void GetDirectory(char *DirectoryName) int ConfirmFileAttrib(char* filename) char *GetCurrentPath() char* GetFullFileName(char *filename) char *WillDeleteFile(char *FileName) //-------------------------------------------------------- //--------------- 获得文件属性 --------------------------- //-------------------------------------------------------- int ConfirmFileAttrib(char* filename) { int temp=0 int attrib=(_rtl_chmod(filename,0)) if(attrib==-1) { switch(errno) { case ENOENT: //printf("%s Path or file not found.\n",filename) temp=0 break case EACCES: /链茄/printf("Permission denied.\n") temp=-1 break default: //printf("Error number: %d", errno) temp=-2 break } } else { if(attrib &FA_RDONLY) { temp=1 //printf("%s is read-only.\n", filename) } if(attrib &FA_HIDDEN) { temp=2 //printf("%s is hidden.\纯唤顷n", filename) } if(attrib &FA_SYSTEM) { temp=3 //printf("%s is a system file.\n", filename) } if(attrib &FA_DIREC) { temp=4 //printf("%s is a directory.\n", filename) } if (attrib &FA_ARCH) { temp=5 //printf("%s is an archive file.\n", filename) } } return temp } //-------------------------------------------------------- //-------------------------------------------------------- //--------------- 获取目录流 ----------------------------- //-------------------------------------------------------- void GetDirectory(char *DirectoryName) { DIR* Directory_Point struct dirent *entry bool DirControl if((Directory_Point=opendir(DirectoryName))==NULL) { printf("Error opening directory!\n") return } else { if(strcmp(DirectoryName,"..")==0) { return } if(strcmp(DirectoryName,".")==0) DirControl=true else DirControl=false chdir(DirectoryName) //char *filename=DirectoryName //int k=creat(strcat(filename,".txt"),S_IWRITE) while(bool(entry=readdir(Directory_Point))) { if(ConfirmFileAttrib(entry->d_name)==5) // 确定为文件属性 { // 文件过滤 WillDeleteFile(entry->d_name) } if(ConfirmFileAttrib(entry->d_name)==4) // 确定为目录属性 { if(strcmpi(entry->d_name,"..")==0||strcmpi(entry->d_name,".")==0) { continue } else { //printf("\n%s is direct\n\n",entry->d_name) GetDirectory(entry->d_name) } } } if(!DirControl==true) chdir("..") closedir(Directory_Point) } } //-------------------------------------------------------- //-------------------------------------------------------- //---------- 判断文件类型以备过滤 ------------------------ //-------------------------------------------------------- char* GetFullFileName(char *filename) { char *FullFilename=GetCurrentPath() if(strlen(FullFilename)<=3) { strcat(FullFilename,filename) } else { strcat(FullFilename,"\\") strcat(FullFilename,filename) } return FullFilename } char *GetCurrentPath() { char path[1024]="" strcpy(path, "X:\\")/* fill string with form of response: X:\ */ path[0] = 'A' + getdisk()/* replace X with current drive letter */ getcurdir(0, path+3)/* fill rest of string with current directory */ return path } char *WillDeleteFile(char *FileName) { int len for(len=strlen(FileName)len>=0len--) { if(FileName[len]=='.') break } char* Retname int s=-1 for(int i=leni<=strlen(FileName)i++) { Retname[s+=1]=FileName[i] } int i=-1 if(Retname[1]=='~')i=0 if(strcmpi(Retname,".bak")==0)i=0 if(strcmpi(Retname,".obj")==0)i=0 if(strcmpi(Retname,".tds")==0)i=0 if(strcmpi(Retname,".dcu")==0)i=0 if(strcmpi(Retname,".tmp")==0)i=0 if(strcmpi(Retname,".ilk")==0)i=0 if(strcmpi(Retname,".pch")==0)i=0 if(strcmpi(Retname,".pdb")==0)i=0 if(strcmpi(Retname,".tlb")==0)i=0 if(strcmpi(Retname,".idb")==0)i=0 if(strcmpi(Retname,".pdb")==0)i=0 if(strcmpi(Retname,".r$p")==0)i=0 if(strcmpi(Retname,".OBR")==0)i=0 if(strcmpi(Retname,".mbt")==0)i=0 if(strcmpi(Retname,".mrt")==0)i=0 if(strcmpi(Retname,".csm")==0)i=0 if(i==0) { remove(GetFullFileName(FileName)) printf("%s delete\n",GetFullFileName(FileName)) } return Retname }@echo offfor /r 配燃d:\123 %%i in 培敏虚(*) do (
拿租 if "%%~xi" neq ".bak" echo %%i
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)