qt目录操作
一、目录操作
主要用到两个类:QDir,QFileInfo
1.1 QDir
QDir 类具有存取目录结构和内容的能力,使用它可以操作目录、存取目录或文件信息、操作底层文件 系统,而且还可以存取 Qt 的资源文件。
判断目录是否存在可以使用 exists(),目录的属性可以使用 isReadable()、isAbsolute ()、 isRelative() 和 isRoot()来获取 。 目录下有很多条目,包括文件、目录和符号连接,总的条目数可以使用 count()来 统计。 entryList()返回目录下所有条目组成的字符串链表 。 文件可以使用 remove()函数删除,删除目 录用 rmdir() ,改名用rename()。
一般使用Filters对目录下的文件进行过滤。
1.2、QFileInfo
QFilelnfo 类提供了与系统无关的文件信息,包括文件的名称、在文件系统中的位置(路径)、文件的 访问权限以及是否是一个目录或者符号链接等 。 QFilelnfo也可以获取文件的大小和最近一次修改/读 取的时间,还可以获取 Qt 资源的相关信息 。 QFilelnfo 指向的文件可以在 QFileinfo 对象构建时设置,或者以后使用 setFile()来设置。可以使用以 exists()来查看文件是否存在,使用 size ()获取文件的大小。
1.3、判断文件夹是否存在
QDir dir("D:/game");
qDebug()<<dir.exists();//该路径文件存不存在,不存在返回假
1.4、创建目录
QDir dir("D:/test");
if(!dir.exists())
{
dir.mkdir("D:/test");
qDebug()<<"创建了新的文件夹";
}
else
{
qDebug()<<"文件夹存在";
}
1.5、获取常用目录
QDir dir;
qDebug()<<dir.current();
qDebug()<<dir.currentPath(); //相对路径的起始位置
qDebug()<<dir.homePath();
qDebug()<<dir.tempPath();
qDebug()<<dir.rootPath(); //根目录
1.6、切换路径
qDebug()<<dir.dirName();//当前文件夹的名字
qDebug()<<dir.absolutePath();//当前文件夹的绝对路径
dir.cd("C:/");//切换到C盘下
qDebug()<<dir.absolutePath();
dir.rmdir("D:/test"); //删除文件夹,,remove:文件的删除
1.7、遍历文件
QDir dir("D:/test");
foreach(QFileInfo item,dir.entryInfoList()) //遍历文件夹里面的所有文件夹和文件
{
if(item.isDir())
{
qDebug()<<"文件夹"<<item.filePath(); //fileName只有名字
}
else if (item.isFile())
{
qDebug()<<"文件:"<<item.filePath();
}
}
1.8、文件过滤
QStringList listters; //过滤条件
listters<<"*.txt"<<"*.rar"; //设置过滤条件
dir.setNameFilters(listters); //过滤掉指定名称的文件
qDebug()<<dir.entryList(listters,QDir::Files);