因此,任务是在文件中查找文本。我想省略手动编码检测,并使用QFile
和QTextStream
(我的意思是QFile::readAll
和QTextStream::readAll
,并使用readLine
编码。不幸的是,即使在300-360mb的文件中,它们也消耗了太多的内存,而bad_alloc
深度readAll
的应用程序崩溃了。
问题是:是否可以减少此类的内存消耗?如果没有,是否有一个好的课程没有那么多的阅读记忆?
if (fInfo.isExecutable() || !fInfo.isReadable())
continue;
QFile file(fInfo.absoluteFilePath());
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
continue;
QTextStream in(&file);
int lineNumber = 1;
QStringList data;
if (file.size() > sizeTreshold())
{
QString d;
while(!in.atEnd())
{
d = in.readLine(); // <--- even this method leads to crash
data.append((!m_case) ? d.toLower() : d);
}
}
else
{
QString d = in.readAll();
if (!m_case)
data = d.toLower().split(QLatin1String("\n"));
else
data = d.split(QLatin1String("\n"));
}
file.close();