qt使用线程读取文件夹中多个文件内容
时间: 2024-03-01 14:53:39 浏览: 206
QT 实现文件的读取操作
4星 · 用户满意度95%
可以使用Qt中的QDir类来获取文件夹中的所有文件,然后使用多线程来读取每个文件的内容。下面是一个简单的示例代码:
```c++
#include <QCoreApplication>
#include <QThread>
#include <QDir>
#include <QStringList>
#include <QFile>
#include <QDebug>
class FileThread : public QThread
{
public:
FileThread(const QString& fileName) : m_fileName(fileName) {}
protected:
virtual void run()
{
QFile file(m_fileName);
if (file.open(QIODevice::ReadOnly))
{
QByteArray data = file.readAll();
qDebug() << m_fileName << "content:" << data;
file.close();
}
else
{
qDebug() << "Failed to open " << m_fileName;
}
}
private:
QString m_fileName;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString dirPath = "/path/to/folder";
QDir dir(dirPath);
QStringList filters;
filters << "*.txt"; // 只读取txt文件
QStringList fileNames = dir.entryList(filters, QDir::Files);
QList<FileThread*> threads;
foreach (const QString& fileName, fileNames)
{
FileThread* thread = new FileThread(dir.absoluteFilePath(fileName));
threads.append(thread);
thread->start();
}
foreach (FileThread* thread, threads)
{
thread->wait();
delete thread;
}
return a.exec();
}
```
上面的代码中,FileThread类继承自QThread类,用于读取单个文件。在main函数中,首先获取文件夹中所有的txt文件名,然后遍历文件名列表,创建FileThread线程对象并启动线程。最后,等待所有线程结束并释放线程对象。注意在读取文件时要进行错误处理。
阅读全文