QT读取文件夹大小

本文介绍了一个函数,用于根据指定的文件夹路径递归计算所有子文件的大小,并将它们累加得到总大小。代码示例清晰易懂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据文件夹路径,得到子文件及子文件夹信息,递归调用获得所有子文件大小并累加。
代码比较简单:
quint64 MessagesWidget::dirFileSize(const QString &path)
{
QDir dir(path);
quint64 size = 0;
//dir.entryInfoList(QDir::Files)返回文件信息
foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files))
{
//计算文件大小
size += fileInfo.size();
}
//dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)返回所有子目录,并进行过滤
foreach(QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
//若存在子目录,则递归调用dirFileSize()函数
size += dirFileSize(path + QDir::separator() + subDir);

}
return size;
}
////////////////////////////////////////////完

Qt 中,你可以使用 `QFile` 和 `QDir` 类来替换文件夹下的文件。以下是一个简单的示例,说明如何读取一个文件,修改其内容,然后写回原位置: ```cpp #include <QCoreApplication> #include <QFile> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 指定要操作的文件路径 QString filePath = "path/to/your/file.txt"; // 创建 QFile 对象 QFile file(filePath); if (!file.open(QIODevice::ReadOnly | QIODevice::WriteOnly)) { qCritical() << "Failed to open the file: " << file.errorString(); return -1; } // 读取原始内容 QByteArray originalData = file.readAll(); // 假设我们想替换所有 "oldText" 为 "newText" QByteArray newData = replaceSubstring(originalData, "oldText", "newText"); // 写回文件 if (file.write(newData) != newData.size()) { qCritical() << "Failed to write to the file: " << file.errorString(); return -1; } file.close(); qDebug() << "File replaced successfully."; return app.exec(); } // 辅助函数用于替换子字符串(这里仅作示例) QByteArray replaceSubstring(const QByteArray &data, const QString &find, const QString &replace) { return data.replace(find.toUtf8(), replace.toUtf8()); } ``` 在这个例子中,`replaceSubstring` 是一个辅助函数,用于在字节数组(由 `QByteArray` 表示)中查找并替换指定的子字符串。实际应用可能需要更复杂的逻辑处理。 请注意,这个代码片段假设文件大小不会变化太大,可以直接读入内存进行替换,如果文件非常大,你需要考虑其他策略,比如逐行读写。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值