添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
细心的拖把  ·  How to register an ...·  2 月前    · 
爱旅游的牛排  ·  使用jQuery ...·  1 年前    · 
斯文的大象  ·  使用 python 读取 yaml ...·  1 年前    · 
return false;     dir.setFilter(QDir::Dirs|QDir::Files);//除了目录或文件,其他的过滤掉     dir.setSorting(QDir::DirsFirst);//优先显示目录     QFileInfoList list = dir.entryInfoList();//获取文件信息列表     int i = 0;    bool bIsDir;            QFileInfo fileInfo = list.at(i);            if(fileInfo.fileName()=="."|fileInfo.fileName()=="..")                 continue; bIsDir = fileInfo.isDir();            if (bIsDir)                nFiles++;                //对文件属性进行处理 //fileInfo.size(),fileInfo.fileName(),fileInfo.path()    FindFile(fileInfo.filePath());                nFiles++;     while(i 二、QT获取文件夹下所有文件数目及名字
path=QFileDialog::getExistingDirectory(NULL, tr("选择文件夹"),"D:\\",QFileDialog::ShowDirsOnly);
        QDir *dir=new QDir(path);
        QStringList filter;
        //filter<<"*.dat";
        //dir->setNameFilters(filter);
        QList<QFileInfo> *fileInfo=new QList<QFileInfo>(dir->entryInfoList(filter));

注释掉的两行是用来文件过滤用的,如果你要指定文件后缀名,这样写filter<<"*.dat"  就好了,如果要指定多个后缀名,这样写filter<<"*.dat"<<"*.txt"就行了

文件数目 :fileInfo->count();

文件名称 :fileInfo->at(i).fileName();

文件路径(包含文件名) :fileInfo->at(i).filePath();

三、Qt遍历目录获取文件信息

QFileInfo
获取文件信息:文件名称,路径,大小,创建时间,修改时间,权限等
使用
路径:
UNIX: /home/dipper/file1
Windows: C://dipper//file1

构造函数:
QFileInfo fileInfo(path);
QFileInfo fileInfo;
fileInfo.setFile(path);

exists() : 判断文件是否存在
size() : 获取文件大小

文件类型:
isFile(), isDir(), isSymLink()

symLinkTarget(): 返回符号链接的文件

注意:
UNIX和Windows(快捷方式)对符号链接处理不一样
UNIX: size()返回链接的目标文件的大小
Windows: size()返回链接文件本身的大小

#ifdef Q_OS_UNIX
QFileInfo info1("/home/bob/bin/untabify");
info1.isSymLink();          // returns true
info1.absoluteFilePath();   // returns "/home/bob/bin/untabify"
info1.size();               // returns 56201
info1.symLinkTarget();      // returns "/opt/pretty++/bin/untabify"
QFileInfo info2(info1.symLinkTarget());
info1.isSymLink();          // returns false
info1.absoluteFilePath();   // returns "/opt/pretty++/bin/untabify"
info1.size();               // returns 56201
#endif
#ifdef Q_OS_WIN
QFileInfo info1("C://Documents and Settings//Bob//untabify.lnk");
info1.isSymLink();          // returns true
info1.absoluteFilePath();   // returns "C:/Documents and Settings/Bob/untabify.lnk"
info1.size();               // returns 743
info1.symLinkTarget();      // returns "C:/Pretty++/untabify"
QFileInfo info2(info1.symLinkTarget());
info1.isSymLink();          // returns false
info1.absoluteFilePath();   // returns "C:/Pretty++/untabify"
info1.size();               // returns 63942
#endif

path() : 返回文件路径
fileName(): 返回文件名称

QFileInfo fileInfo("/home/dipper/xyz.tar.gz");
fileInfo.path(); // returns "/home/dipper"
fileInfo.fileName(); // returns "xyz.tar.gz"
fileInfo.baseName(); // returns "xyz"
fileInfo.completeBaseName(); // returns "xyz.tar"
fileInfo.suffix();   // returns "gz"
fileInfo.completeSuffix(); // returns "tar.gz"

日期相关:
created(): 创建时间
lastModified() : 最近修改时间
lastRead() : 最近读时间

权限:
isReadable(), isWritable(), isExecutable()

所有者:
ower(), owerId(), group(), groupId(), permissions(),
permission(QFile::Permissions permissions)

dir(): 返回父目录
下面三个都返回"~/examples/191697"
QFileInfo fileInfo1("~/examples/191697/.");
QFileInfo fileInfo2("~/examples/191697/..");
QFileInfo fileInfo3("~/examples/191697/main.cpp");

下面三个都返回"."
QFileInfo fileInfo4(".");
QFileInfo fileInfo5("..");
QFileInfo fileInfo6("main.cpp");

相对路径和绝对路径
QString absolute = "/local/bin";
QString relative = "local/bin";
QFileInfo absFile(absolute);
QFileInfo relFile(relative);

QDir::setCurrent(QDir::rootPath());
// absFile and relFile now point to the same file

QDir::setCurrent("/tmp");
// absFile now points to "/local/bin",
// while relFile points to "/tmp/local/bin"

QDir 显示文件系统目录

实例:文件浏览器

//fileviewer.h
#ifndef FILEVIEWER_H
#define FILEVIEWER_H
#include <QtGui>
class FileViewer : public QDialog        // file information dialogs widget
Q_OBJECT
public:
FileViewer(QWidget *parent=0);
~FileViewer();
public:
QLineEdit* currDir;
QListWidget* fileListWidget;
public:
void showFileInfoList(QFileInfoList list);
public slots:
void showDir(QListWidgetItem * item);
void showFiles(QDir dir);
void showFiles();
#endif // FILEVIEWER_H
//fileviewer.cpp
#include "fileviewer.h"
FileViewer::FileViewer(QWidget *parent)
: QDialog(parent)
   setWindowTitle(tr("File Viewer"));
   currDir = new QLineEdit;
   currDir->setText("c://");
   //currDir->setReadOnly(true);
   fileListWidget = new QListWidget;
   QVBoxLayout *vbLayout = new QVBoxLayout(this);
   vbLayout->addWidget(currDir);
   vbLayout->addWidget(fileListWidget);
   connect(currDir, SIGNAL(returnPressed()),
   this, SLOT(showFiles()));
   connect(fileListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
   this, SLOT(showDir(QListWidgetItem *)));
   QString root = "c://";
   QDir rootDir(root);
   QStringList strings;
   strings << "*" ;
   QFileInfoList list = rootDir.entryInfoList(strings);
   showFileInfoList(list);
FileViewer::~FileViewer()
//显示文件信息列表
void FileViewer::showFileInfoList(QFileInfoList list)
   fileListWidget->clear();
   for(int i=0; i<list.count(); i++)
      QFileInfo tmpFileInfo = list.at(i);
      if((tmpFileInfo.isDir()))
         QIcon icon(":/images/dir.png");
         QString fileName = tmpFileInfo.fileName();
         QListWidgetItem *tmp = new QListWidgetItem(icon, fileName); //在列表上显示图标和名称
         fileListWidget->addItem(tmp);
      else if(tmpFileInfo.isFile())
         QIcon icon(":/images/file.png");
         QString fileName = tmpFileInfo.fileName();
         QListWidgetItem *tmp = new QListWidgetItem (icon, fileName);
         fileListWidget->addItem(tmp);
void FileViewer::showDir(QListWidgetItem * item)
QString str = item->text();
QDir dir;
dir.setPath(currDir->text()); //设置目录
dir.cd(str); //切换到另一个目录
currDir->setText(dir.absolutePath());
showFiles(dir);
void FileViewer::showFiles(QDir dir)
QStringList strings;
strings << "*" ;
QFileInfoList list = dir.entryInfoList(strings,   //文件名称过滤器,"*", "*.tar.gz"
QDir::AllEntries,  //文件属性过滤器,目录,文件,读写
QDir::DirsFirst  //排序方式,名称,修改时间,大小,目录优先
showFileInfoList(list);
void FileViewer::showFiles()
QDir dir(currDir->text());
showFiles(dir);
//main.cpp
#include "fileviewer.h"
#include <QApplication>
int main( int argc, char **argv )
   QFont font("ZYSong18030",12);
   QApplication::setFont(font);
   QApplication app(argc, argv);
   QTranslator translator;
   translator.load("fileviewer_zh","..");
   app.installTranslator(&translator);
   FileViewer *fileviewer = new FileViewer;
   fileviewer->show();
   return app.exec();

绝对路径
QDir("/home/user/Documents")
QDir("C:/Documents and Settings")

dirName(): 返回目录名称
QDir("Documents/Letters/Applications").dirName() // "Applications"
QDir().dirName()                                 // "."

切换目录:cd(str), cdUp()

创建,修改,删除:mkdir(), rename(), rmdir()

获取目录里面的文件,目录等
count(): 返回条目的数量
QStringList list = dir.entryList();
QFileInfoList fileInfoList = dir.entryInfoList();

静态函数
Dir        Qstring
current(), currentPath()
home(),    homePath()
root(),    rootPath()
temp(),    tempPath()

QDir dir("example");
if (!dir.exists())
qWarning("Cannot find the example directory");
//使用静态函数:QFile::exists("example");

遍历目录,读写文件

QDir dir = QDir::root();                 // "/"
if (!dir.cd("tmp")) {                    // "/tmp"
   qWarning("Cannot find the /"/tmp/" directory");
} else 
   QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt"
   if (!file.open(QIODevice::ReadWrite))
   qWarning("Cannot create the file %s", file.name());

列出当前目录下所有文件,不包括符号链接,按大小排序,升序

#include <QDir>
#include <iostream>
int main(int argc, char *argv[])
   QCoreApplication app(argc, argv);
   QDir dir;
   dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
   dir.setSorting(QDir::Size | QDir::Reversed);
   QFileInfoList list = dir.entryInfoList();
   std::cout << "     Bytes Filename" << std::endl;
   for (int i = 0; i < list.size(); ++i) {
      QFileInfo fileInfo = list.at(i);
      std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10).arg(fileInfo.fileName()));
      std::cout << std::endl;
   return 0;

四、获取文件的(完整)后缀名和(完整)前缀名

获取文件前缀名

QFileInfo fi("/tmp/archive.tar.gz");
QString base= fi.baseName(); // base = "archive"

获取文件的完整前缀名

 QFileInfo fi("/tmp/archive.tar.gz");
 QString base= fi.completeBaseName(); // base = "archive.tar"

获取文件后缀名

QFileInfo fi("/tmp/archive.tar.gz");
QString ext= fi.suffix();  // ext = "gz"

获取文件的完整后缀名

QFileInfo fi("/tmp/archive.tar.gz");
QString ext= fi.completeSuffix(); // ext = "tar.gz"

一、采用递归和QDir实现文件夹下所有文件遍历的方法#include &amp;lt;QDir&amp;gt;bool FindFile(const QString &amp;amp; path){    QDir dir(path);   if (!dir.exists())    return false;    dir.setFilter(QDir::Dirs|QDir::Files);//除了...
文章目录前言一、Qt 遍历文件夹下一层的文件:1、方式 1:2、方式2:二、级联遍历文件夹及其子孙文件夹中的文件1.方式1:2.方式2:3.关于 QFileInfo 获取文件信息的方法可以查看 API 关于 Qt 操作文件夹文件的知识用途较多,比如遍历下一层乃至所有子孙文件文件夹获取它们的一些信息(大小、类型、最后更改时间等)。当然,也可以进行级联删除。 首先看简单的: 一、Qt 遍历文件夹下一层的文件: 1、方式 1: void ImageTree::addFolderImages(QStr
Qt 遍历文件夹的三种方式 github dome 今天的心态被搞崩溃了,在多年的编程经验里。普遍的经验认为在遍历文件夹这件事情上,肯定是队列优于递归的。但在Qt 由于有一些库函数,我发现使用递归的速度尽然比队列还快,而且队列的遍历还特别的慢,估计是我写的队列遍历那个地方又问题,请大神指导一下,这是为什么呢?我一个qt初学者真心想把这个问题搞清楚。因为之前在公司电脑测试的时候,发现队列确实别递归快,但是回家用自己的笔记本测试的时候发现,在文件特别多的时候,队列的代码耗时特别长!! //递归实现文件的遍
获取指定文件夹下的所有文件(*.tiff *.tif): mFolderPath = QFileDialog::getExistingDirectory(NULL, "Open Folder", "F:\\FocusImgs\\imgs\\a1"); if (mFolderPath.isEmpty()) re... 提供一个字节数组,QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串 . 使用QByteArray比使用const char *更方便. 除了QByteArray之外,Qt还提供了QString类来存储字符串数据。对于大多数用途,QString是您要使用的类。它存储16位Unicode字符,使您可以轻松地在应用程序中存储... (1)QPainter用来执行具体的绘图相关的操作,用来画点,线,填充,变换,alpha/阿尔法通道(透明度)  *Appha的值越大,就越不透明,范围是0-255,255就是不透明,0就是完全透明;当对应 RGB 颜色时,  Alpha 会叠加到颜色上面;只有当 Alpha 通道是255时,才是其真正的颜色。* (2)QPainterDevice是Qpainter用来绘图设备,Qt中有几... 当使用QToolBar::addAction()添加一个新的(或已存在的)QAction至工具栏时,工具按钮通常被创建 。也可以用同样的方式构建工具按钮和其它部件,并设置它们的布局。 QToolButto... 八大字符转换方式可参考文章:https://blog.csdn.net/Aidam_Bo/article/details/84111776 uint8_t / uint16_t / uint32_t /uint64_t数据类型详解:https://blog.csdn.net/Aidam_Bo/article/details/85775846 QByteArra... ```cpp QDir dir("your/folder/path"); dir.setFilter(QDir::Files | QDir::NoDotAndDotDot); //筛选文件并排除.和..目录 QFileInfoList fileInfoList = dir.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList) { QString filePath = fileInfo.absoluteFilePath(); // 这里可以对 filePath 进行进一步处理,例如输出、存储等操作 如果你想获取文件夹中的所有文件和子文件夹中的文件,可以使用以下代码: ```cpp QDirIterator it("your/folder/path", QDirIterator::Subdirectories); while (it.hasNext()) { QString filePath = it.next(); if (QFileInfo(filePath).isFile()) { // 这里可以对 filePath 进行进一步处理,例如输出、存储等操作 这段代码使用 QDirIterator 类来遍历文件夹及其子目录,并且通过 QFileInfo 类的 isFile() 方法来判断是否为文件