Qt文件夹和文件访问常见问题和使用方法

常用类及其函数

QDir类

QDir类提供对目录及其内容的访问。
常用函数如下:

目录创建

bool QDir::exists() const;//用于确定目录是否存在,存在返回true,不存在返回false

bool isFile() const;//判断是否是文件

bool isDir() const;//判断是否是文件夹

QString absolutePath() const;//获取当前目录路径

QString QDir::absoluteFilePath(const QString &fileName) const;//用于获取给定文件名的完整绝对路径,根据给定的文件名称(如1.bmp)给出在目录中的绝对路径,包含文件名及后缀

QString QDir::rootPath();//获取当前目录的根目录,如“C:/”

QString fileName() const;//获取文件名

bool QDir::mkdir(const QString &dirName) const;//用于在文件系统中创建一个新的目录,但要创建多级目录的话,还是要调用mkpath函数

bool QDir::mkpath(const QString &dirPath) const;//用于在文件系统中创建一个目录,包括其所有的父目录。如果目录成功创建或已经存在,则返回true;否则返回false。如果路径中的某个目录不存在,函数会递归地创建缺失的目录层级

QString QDir::currentPath();//是该类的静态成员函数,返回的是当前应用程序的工作目录的路径,即程序源码路径

遍历目录及文件

void QDir::setNameFilters(const QStringList &nameFilters);//用于设置目录对象的名称过滤器来限制列出或搜索的文件或目录的类型。

//函数功能:遍历文件夹路径下的子目录或者文件返回的是返回此文件加下所有文件及目录的完整信息,包括用户组,大小,访问时间,权限等等所有与文件有关的信息,以**QFileInfoList ** 格式返回。
QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const;//滤波器nameFilters是手动设置(可以通过setNameFilters函数设置),滤波器filter是枚举型
QFileInfoList QDir::entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const;//滤波器filter是枚举型

根据以上的函数,举例如下:

QString dir_str = "image/" + QDate::currentDate().toString("yyyy-mm-dd");
QDir dir(dir_str );
if(!dir.exists())
{
   
	dir.mkpath(dir_str );
}
QStringList filter;
filter << "*.bmp";
dir.setNameFilters(filter);
QFileInfoList  fileInfoList = dir.entryInfoList(filter);
if(fileInfoList.cout() > 100)
{
   
	//移除一个文件(bmp图像)
}
else
{
   
	//保存一个文件(bmp图像)
}

//函数功能:遍历文件夹路径下的子目录或者文件返回的是所有的文件夹名称或文件名称,不是路径,以QStringList 格式返回
//QDir::entryList并不支持目录的深度搜索,只会获得一级目录下的内容,因此需要通过递归的方式进行深度搜索
QStringList QDir::entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const;//滤波器nameFilters是手动设置(滤波器格式:如字符串"*.bmp"),滤波器filter是枚举型
QStringList QDir::entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const;//滤波器filter是枚类型

Filters枚举类型的取值如下:

  • QDir::Dirs 列出目录;
  • QDir::AllDirs 列出所有目录,不对目录名进行过滤;
  • QDir::Files 列出文件;
  • QDir::Drives 列出逻辑驱动器名称,该枚举变量在Linux/Unix中将被忽略;
  • QDir::NoSymLinks 不列出符号链接;
  • QDir::NoDotAndDotDot 不列出文件系统中的特殊文件".“及”…";
  • QDir::NoDot 不列出"."文件,即指向当前目录的软链接
  • QDir::NoDotDot 不列出"…"文件,即指向上级目录的软链接;
  • QDir::AllEntries 其值为Dirs | Files | Drives,列出目录、文件、驱动器
  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Qt的QDir和QFile类来创建文件夹文件。首先,你需要获取当前时间,然后将其格式化为你要的字符串格式,例如: ```cpp QDateTime currentDateTime = QDateTime::currentDateTime(); QString currentDateTimeString = currentDateTime.toString("yyyyMMdd-hhmmss"); ``` 这将获取当前日期和时间,并将其格式化为"yyyyMMdd-hhmmss"的字符串格式,例如"20211019-144523"。 接下来,你可以使用QDir类来创建一个新的文件夹,例如: ```cpp QString folderPath = "/path/to/folder/" + currentDateTimeString; QDir().mkpath(folderPath); ``` 这将创建一个名为"20211019-144523"的文件夹,它将位于"/path/to/folder/"路径下。 最后,你可以使用QFile类来创建一个新的文件并将其保存到刚刚创建的文件夹,例如: ```cpp QString filePath = folderPath + "/example.txt"; QFile file(filePath); file.open(QIODevice::WriteOnly); file.write("Hello, World!"); file.close(); ``` 这将创建一个名为"example.txt"的文件,并将字符串"Hello, World!"写入该文件。该文件将保存在刚刚创建的文件夹。 完整的示例代码如下: ```cpp #include <QDir> #include <QFile> #include <QDateTime> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 获取当前时间并将其格式化为字符串 QDateTime currentDateTime = QDateTime::currentDateTime(); QString currentDateTimeString = currentDateTime.toString("yyyyMMdd-hhmmss"); // 创建一个新的文件夹 QString folderPath = "/path/to/folder/" + currentDateTimeString; QDir().mkpath(folderPath); // 创建一个新的文件并将其保存到文件夹 QString filePath = folderPath + "/example.txt"; QFile file(filePath); file.open(QIODevice::WriteOnly); file.write("Hello, World!"); file.close(); return a.exec(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值