linux磁盘大小获取和文件大小获取


一、获取磁盘大小(给入的是文件夹绝对路径);
check_disk_available(QString path)
{
    struct statfs diskinfo;
    unsigned long long size;
    unsigned long long blocksize;
    statfs(path.toUtf8().data(),&diskinfo);
    blocksize=diskinfo.f_bsize;
    size=diskinfo.f_bavail*blocksize;
    size=size>>20;
    if(size<2000)
    {
        return -1;
    }
    return 1;
}
statfs定义:
struct statfs {
long f_type; /* 文件系统类型 */
long f_bsize; /* 经过优化的传输块大小,单位B*/
long f_blocks; /* 文件系统数据块总数 */
long f_bfree; /* 可用块数 */
long f_bavail; /* 非超级用户可获取的块数 */
long f_files; /* 文件结点总数 */
long f_ffree; /* 可用文件结点数 */
fsid_t f_fsid; /* 文件系统标识 */
long f_namelen; /* 文件名的最大长度 */
};
 
二、文件大小获取:
  int getfilesize(char *filename)

{

int filesize=0;
struct stat mystat;
stat(filename,&mystat);
filesize=mystat.st_size;

return filesize;

}

  1. struct stat  
  2. {  
  3.   
  4.     dev_t       st_dev;     /* ID of device containing file -文件所在设备的ID*/  
  5.   
  6.     ino_t       st_ino;     /* inode number -inode节点号*/  
  7.   
  8.     mode_t      st_mode;    /* protection -保护模式?*/  
  9.   
  10.     nlink_t     st_nlink;   /* number of hard links -链向此文件的连接数(硬连接)*/  
  11.   
  12.     uid_t       st_uid;     /* user ID of owner -user id*/  
  13.   
  14.     gid_t       st_gid;     /* group ID of owner - group id*/  
  15.   
  16.     dev_t       st_rdev;    /* device ID (if special file) -设备号,针对设备文件*/  
  17.   
  18.     off_t       st_size;    /* total size, in bytes -文件大小,字节为单位*/  
  19.   
  20.     blksize_t   st_blksize; /* blocksize for filesystem I/O -系统块的大小*/  
  21.   
  22.     blkcnt_t    st_blocks;  /* number of blocks allocated -文件所占块数*/  
  23.   
  24.     time_t      st_atime;   /* time of last access -最近存取时间*/  
  25.   
  26.     time_t      st_mtime;   /* time of last modification -最近修改时间*/  
  27.   
  28.     time_t      st_ctime;   /* time of last status change - */  
  29.   
  30. };
 
 

posted on 2017-03-24 10:35  哈哈木  阅读(854)  评论(0编辑  收藏  举报