windows 下-c语言获得目录下特定类型的文件名

来源:互联网 发布:linux jar 输出 编辑:程序博客网 时间:2024/06/07 09:53

#include <stdlib.h> //_MAX_PATH, system()
#include <direct.h> //_getcwd(), _chdir()
#include <io.h> //_finddata_t, _findfirst(), _findnext(), _findclose() 
 

void view()
{
 char*  filetype= ".\\music\\*.mp3"; //在music目录下查找扩展名mp3的文件
 struct _finddata_t file; //定义结构体变量, 查找文件  
 long fileHandle;
 char path[_MAXPATH]; //路径
 fileHandle = _findfirst(filetype,&file);//查找所有文件
 if(fileHandle == -1)/*如果handle为-1, 表示当前目录为空, 则结束查找而返回 如果handle为-1, 表示当前目录为空, 则结束查找而返回 */    
  return NULL ;
 else
 {
  if(file.attrib & _A_SUBDIR ) //是目录
  {
   if(file.name[0]!='.') //文件名不是'.'或'..'时
   {
    _chdir(file.name); //进入该目录
    _getcwd(path,_MAXPATH); //获得目录路径
    puts(path); //输出目录路径
    view();//继续遍历
    _chdir("..");/*查找完毕之后, 返回上一级目录找完毕之后, 返回上一级目录*/
   }
  }
  else // 如果第一个实体不是目录,显示该文件
  {
   _getcwd(path,_MAXPATH);
   // 再获得文件的完整的路径名(包含文件的名称)
   strcat(path,"\\");
   strcat(path,file.name);
   printf("%-20s\n",path);
   printf("%-20s\n",file.name);

  }
   // 继续对当前目录中的下一个子目录或文件进行与上面同样的查找
  while(!(_findnext(fileHandle,&file)))
  {
   if(file.attrib &_A_SUBDIR) //是目录
   {
    if(file.name[0]!='.') //文件名不是'.'或'..'时
    {
     _chdir(file.name); //进入该目录
     _getcwd(path,_MAXPATH); //获得目录路径
     puts(path); //输出目录路径
     view();//继续遍历
     _chdir("..");/*查找完毕之后, 返回上一级目录找完毕之后, 返回上一级目录*/
    }
   }
   else //// 如果第一个实体不是目录,显示该文件
   {
    _getcwd(path,_MAXPATH);
    // 再获得文件的完整的路径名(包含文件的名称)
    strcat(path,"\\");
    strcat(path,file.name);
    fw=fopen(tempfilename,"a");
    fprintf(fw,"%s\n",path);
    printf("%-20s\n",path);
    printf("%-20s\n",file.name);
   }
  }
  _findclose(fileHandle);
}
 

0 0
原创粉丝点击