现在的位置: 首页 > 综合 > 正文

文件的遍历(1)

2013年10月12日 ⁄ 综合 ⁄ 共 2276字 ⁄ 字号 评论关闭

lstat头文件为:<sys/stat.h>

得到文件的类型:文件还是文件夹

typedef enum{
 FILE_DIRECTORY,
 FILE_REGULAR_FILE,
 FILE_ERROR
}FileType;

 

 

FileType GetFileType(const char *filename)                                                 
{
 struct stat statbuf;

 if(filename == NULL)
  return FILE_ERROR;
 if(lstat(filename,&statbuf) < 0){                                                                      //文件路径名      即判断是否有这个文件或目录                                                                                                                        如果读不到文件的信息则返回小于0的值
  return FILE_ERROR;
 }

 if(S_ISDIR(statbuf.st_mode) == 0){                                                                //判断是否是目录
  return FILE_DIRECTORY;
 }else{                                                                                                              //否则为文件
  return FILE_REGULAR_FILE;
 }

析:  lstat

  函数名: lstat

  功 能: 获取一些文件相关的信息

  用 法: int lstat(const char *path, struct stat *buf);

  参数:

  path:文件路径名。

  filedes:文件描述词。

  buf:是以下结构体的指针

  struct stat {

  dev_t st_dev; /* 文件所在设备的标识 */

  ino_t st_ino; /* 文件结点号 */

  mode_t st_mode; /* 文件保护模式 */

  nlink_t st_nlink; /* 硬连接数 */

  uid_t st_uid; /* 文件用户标识 */

  gid_t st_gid; /* 文件用户组标识 */

  dev_t st_rdev; /* 文件所表示的特殊设备文件的设备标识 */

  off_t st_size; /* 总大小,字节为单位 */

  blksize_t st_blksize; /* 文件系统的块大小 */

  blkcnt_t st_blocks; /* 分配给文件的块的数量,512字节为单元 */

  time_t st_atime; /* 最后访问时间 */

  time_t st_mtime; /* 最后修改时间 */

  time_t st_ctime; /* 最后状态改变时间 */
  };

  返回说明:

  成功执行时,返回0。失败返回-1

      S_ISDIR(statbuf.st_mode) 判断一个路径是否是目录

 

======================================

  1. // 功能说明 : 判断是否目录文件
  2. // 输入参数 :
  3. // 输出参数 : VOID
  4. // 返回值   : YCPP_BOOL
  5. // 使用说明 :
  6. YCPP_BOOL IsDir ( const char * szDirName )
  7. {
  8.         struct stat st;
  9.         return ( lstat (szDirName, &st) == 0 && S_ISDIR (st.st_mode) );
  10. }

======================================

  1. // 功能说明 : 判断是否普通文件
  2. // 输入参数 :
  3. // 输出参数 : VOID
  4. // 返回值   : YCPP_BOOL
  5. // 使用说明 :
  6. YCPP_BOOL IsFile ( const char * szDirName )
  7. {
  8.         struct stat st;
  9.         return ( lstat (szDirName, &st) == 0 && S_ISREG (st.st_mode) );
  10. }

======================================

  1. // 功能说明 : 获取文件上次修改时间
  2. // 输入参数 :
  3. // 输出参数 : VOID
    // 返回值   : YCPP_RET
  4. // 使用说明 :
  5. ///////////////////////////////////////////////////////////////////////////////
  6. YCPP_RET FileLastMTime ( const char *szFileName )
  7. {
  8.         struct stat st;
  9.         memset ( &st, 0, sizeof(struct stat) );
  10.         if ( lstat (szFileName, &st) == 0 )
  11.                 return st.st_mtime;
  12.        
  13.         printf ( "%s FileLastMTime error %s/n", szFileName, strerror(errno) );
  14.         return -1;
  15. }

======================================

 

【上篇】
【下篇】

抱歉!评论已关闭.