用QT 写一个类,把文件夹下所有的文件都读入一个以 文件名为 key ,文件内容为 value 的map
时间: 2024-02-24 11:57:17 浏览: 59
QT 实现文件的读取操作
4星 · 用户满意度95%
好的,这里是一个简单的实现:
```cpp
#include <QDir>
#include <QFile>
#include <QMap>
class FolderReader {
public:
static QMap<QString, QString> readFolder(const QString& folderPath) {
QMap<QString, QString> fileMap;
QDir folder(folderPath);
folder.setFilter(QDir::Files | QDir::NoSymLinks);
folder.setSorting(QDir::Name);
QFileInfoList fileList = folder.entryInfoList();
for (const QFileInfo& fileInfo : fileList) {
QFile file(fileInfo.absoluteFilePath());
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QString content = file.readAll();
fileMap.insert(fileInfo.fileName(), content);
}
}
return fileMap;
}
};
```
使用示例:
```cpp
QString folderPath = "/path/to/folder";
QMap<QString, QString> fileMap = FolderReader::readFolder(folderPath);
for (auto it = fileMap.constBegin(); it != fileMap.constEnd(); ++it) {
qDebug() << it.key() << " : " << it.value();
}
```
注意,这个实现中只读取了文件夹下的普通文件,不包括链接文件等其他类型的文件。同时,这个实现中将整个文件读取到内存中,如果文件非常大,可能会导致内存不足。如果需要处理大文件,可以考虑使用流式读取。
阅读全文