まだテキストファイルには含まれていない新しいテキストのみを書き込む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で動作します。 –
あなたの 'paths'があなたが期待しているものであれば、it.next()はあなたの考えではないか、paths.containsはあなたの考えをしません。 – UKMonkey