QT文件QFileXX从专家到小白

QFile

文件复制:QFile::copy()

QFileInfo

QDir

含义
QDir::Dirs只列出目录
QDir::Files只列出文件
QDir::NoSymLinks不列出符号连接(不支持符号连接的操作系统会忽略它)
QDir::All列出目录、文件、驱动器和符号连接
QDir::Readable应用程序可以读访问的文件
QDir::Writable应用程序可以写访问的文件
QDir::Executable应用程序可以执行访问的文件
QDir::Hidden列出隐藏文件(在Unix下就是以.开始的文件)

文件是否存在:exists()

QString strDir = "";
if (strDir.isEmpty())
{
    return;
}
QDir dir(strDir);
if (!dir.exists())
{
    return;
}

文件过滤:setFilter()

dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);

文件排序:setSorting()

dir.setSorting(QDir::Size | QDir::Reversed);

文件类型过滤:setNameFilters()

QStringList filters;
filters<<QString("*.jpeg")<<QString("*.txt")<<QString("*.lnk")<<QString("*.tiff")<<QString("*.gif")<<QString("*.bmp");
dir.setNameFilters(filters);

获取文件列表:entryList()

dir.entryList(QDir::Files);

//获取子文件。设置过滤器排除系统默认的.(当前目录)和..(上级目录)条目。
dir.entryList(QDir::NoDotAndDotDot | QDir::AllEntries)

获取文件信息列表:entryInfoList()

QDir dir(m_strDir);
QStringList filterList;
filterList<<"*.doc"<<"*.docx";
return dir.entryInfoList(filterList);

获取绝对路径:absoluteFilePath(const QString &fileName)

拼接“目录 + 文件名”,获取绝对路径。

QString strPath = dir.absoluteFilePath(strFileName);

不检查fileName是否在目录中存在

Trick:文件夹遍历

QDir dir("C:/XXX");
// 判断路径存在性
if(!dir.exists())
{
    return ;
}
//文件过滤
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
//文件输出排序
dir.setSorting(QDir::Size | QDir::Reversed);

QStringList listfiles;
QFileInfoList fileinfolist = dir.entryInfoList();  // QFileInfo对象列表
for (int i=0; i<fileinfolist.size(); i++){
{
     QFileInfo fileInfo = fileinfolist.at(i);
     QString strfilepath = fileInfo.absoluteFilePath();  //获取文件绝对路径
     listfiles.append(strfilepath);
}
int i= 0;
for(QList<QString>::iterator iter = string_list.begin();iter != listfiles.end();iter++)  //迭代器输出
{
    qDebug() << listfiles[i++];
}

Qt实现对文件夹的遍历

QFileDialog

QFileDialog::getExistingDirectory()

//打开文件夹目录
QString strDir = QFileDialog::getExistingDirectory(this, tr("Title"), strDefaultPath);

仅能选择文件夹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值