如何只将新文本写入文本文件
How to write only new text to a text file
我试图写一个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 + "rn";
}
}
你应该每次迭代只调用它一次。接下来http://doc.qt.io/qt-5/qdiriterator.html
将迭代器推进到下一项,并返回的文件路径这个新条目。如果hasNext()返回false,则此函数返回false
返回一个空QString。您可以调用fileName()或filePath()来获取当前条目文件名称或路径,或fileInfo()来获取当前条目的QFileInfo。
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入