/** 获取硬盘大小;内存大小;usb大小*/#ifndef SYSINFOGET_H#define SYSINFOGET_H#include
//磁盘信息
#include #include#include
//内存信息
#include #include#include
//系统账号信息
#include
//文件信息
#include #include#include
classSysInfoGet
{public:
SysInfoGet();/**
* @brief getSysInfoInit 初始化数据*/
voidgetSysInfoInit();/**
* @brief getSysInfo 获取数据*/
voidgetSysInfo();double MBsize; //计算MB用
char *path;char *pathUsb;struct statfs diskInfo; //系统分区磁盘大小
struct sysinfo memInfo; //内存信息
struct statfs diskInfo2; //usb分区磁盘大小
struct dirent *ent;public:/**
* @brief totalDiskSize 磁盘大小*/
doubletotalDiskSize;/**
* @brief usedDiskSize 已用磁盘大小*/
doubleusedDiskSize;/**
* @brief totalMemSize 内存大小*/
doubletotalMemSize;/**
* @brief usedMemSize 已用内存*/
doubleusedMemSize;/**
* @brief totalUsbSize usb大小*/
doubletotalUsbSize;/**
* @brief usedUsbSize usb已用大小*/
doubleusedUsbSize;/**
* @brief usbExist usb是否存在*/
boolusbExist;
};#endif //SYSINFOGET_H#include"sysinfoget.h"SysInfoGet::SysInfoGet()
{
getSysInfoInit();//初始化//getSysInfo();//获取
}voidSysInfoGet::getSysInfoInit(){//初始化usb加载地址
struct passwd *pwd = newpasswd;
pwd=getpwuid(getuid());
path= new char(15);
strcpy(path,"/media/");
strcat(path, pwd->pw_name); //./media/root//初始化
pathUsb = new char(25); //长度够不够?
ent= newdirent;//数据
MBsize = 1024.0*1024.0; //最终结果只留下两位
totalDiskSize=0;
usedDiskSize=0;
totalMemSize=0;
usedMemSize=0;
totalUsbSize=0;
usedUsbSize=0;
usbExist=false;
}voidSysInfoGet::getSysInfo()
{//--------磁盘信息测试---------------------------//struct statfs diskInfo;
statfs("/", &diskInfo);
totalDiskSize= (double)(diskInfo.f_bsize*diskInfo.f_blocks)/MBsize;
usedDiskSize= (double)(diskInfo.f_bsize*diskInfo.f_blocks-diskInfo.f_bsize*diskInfo.f_bfree)/MBsize;//qDebug()<
sysinfo(&memInfo);
totalMemSize= (double)memInfo.totalram/MBsize;
usedMemSize= (double)(memInfo.totalram-memInfo.freeram)/MBsize;//qDebug()<
DIR *pDir =opendir(path);//int existFlag;//existFlag = 0;//while(NULL != (ent=readdir(pDir)) )//{//if(ent->d_type==4)//if(ent->d_type & DT_DIR)//{//if(strcmp(ent->d_name,".")==0 || strcmp(ent->d_name,"..")==0) continue;// //qDebug()<d_name;//u盘文件夹名称//strcpy(pathUsb, path);//strcat(pathUsb, "/");//strcat(pathUsb, ent->d_name);// //qDebug()<
ent=readdir(pDir); //UUI1;UUI;..;.//qDebug()<d_name;
if(ent->d_type==4){ //属于文件夹
if(strcmp(ent->d_name,".")==0 || strcmp(ent->d_name,"..")==0)
{
usbExist= false;
totalUsbSize= 0;
usedUsbSize= 0;
}else{
strcpy(pathUsb, path);
strcat(pathUsb,"/");
strcat(pathUsb, ent->d_name); //获取u盘地址//struct statfs diskInfo2;
statfs(pathUsb, &diskInfo2);
usbExist= true;
totalUsbSize= (double)(diskInfo2.f_bsize*diskInfo2.f_blocks)/MBsize;
usedUsbSize= (double)(diskInfo2.f_bsize*diskInfo2.f_blocks-diskInfo2.f_bsize*diskInfo2.f_bfree)/MBsize;//qDebug()<
}
}
closedir(pDir);//必须关闭//qDebug()<
}