我正在写一个C++应用程序,它只写入文本文件中尚未包含的新文本,但到目前为止我无法获得我的实现获得的结果没有工作。即使文本已包含,文本也会写入文本文件。如何仅将新文本写入文本文件
我会做什么错?
以下是我迄今为止的实施情况。
void ScanDir::qDirIteratorScanner()
{
QDirIterator it(this -> basePath, QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext())
{
paths = scanned();
qDebug() << "Collected : " << paths.size();
if (!paths.contains(it.next())) {
WriteToFile writeToFile(basePath, it.next());
paths << it.next();
}
else {
qDebug() << "Already put : " << it.next();
}
}
}
QStringList ScanDir::scanned()
{
QStringList paths;
QFile dataFile(basePath + "data.txt");
QTextStream in (&dataFile);
if (dataFile.open(QIODevice::ReadOnly))
{
QTextStream in(&dataFile);
while (!in.atEnd())
{
QString line = in.readLine();
paths << line;
}
dataFile.close();
}
return paths;
}
WriteToFile::WriteToFile(QString path, QString data)
{
path = "E:/Data.txt";
QFile file(path);
if (file.open(QFile::Append))
{
QTextStream stream(&file);
stream << data << endl;
qDebug() << "Writting: " << data + "\r\n";
}
}
scan()会返回您认为应该如何处理的内容吗? – UKMonkey
是的,它确实有效,完美@UKMonkey。 –
那么,如果你的'路径'是你所期望的那样,那么无论是it.next()都不是你认为的那样,或者路径.contains不会做你认为它的做法...... – UKMonkey