gpt4 book ai didi

c++ - 达到文件大小限制时触发信号

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:45:42 29 4
gpt4 key购买 nike

我正在编写日志文件并希望将大小限制设置为 10 Mo。

我正在考虑设置一个 QTimer 每 X 分钟/小时触发一次 QFileInfo::refresh并检查文件的大小。

有没有更好的方法来做到这一点?使用 QTimer 对我来说听起来很痛苦,而且很费资源。我希望在达到限制大小时可以使用 SIGNAL

最佳答案

简单有效的解决方案是读取文件大小 QFile::size() 写入日志文件后 和< strong>如果大小超过了限制。请注意,读取大小时必须打开文件。

void Logger::log(const QString &rLine)
{
QFile f(logFileName());
if (f.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text))
{
QTextStream out(&f);
out << rLine << endl;
qint64 f_size = f.size();
f.close();
checkFileSize(f_size);
}
else
{
QTextStream out(stdout);
out << "CAN'T OPEN LOG FILE: " << logFileName();
}
}

void Logger::checkFileSize(qint64 size)
{
if (size <= maxFileSize())
{
return;
}

// Roll the log file or do whatever you wish like send a signal
}

关于c++ - 达到文件大小限制时触发信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231720/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com