我有一个文本文件,将路径写入到磁盘分区中的所有文件。
WriteToFile::WriteToFile(QString path, QString data)
{
path = "E:/Data.txt";
QFile file(path);
if ( file.open(QFile::Append) )
{
data += "\r\n";
QTextStream stream( &file );
stream << data << endl;
qDebug() << "Writting: " << data;
}
}我只将新路径写入文件中。
void ScanDir::qDirIteratorScanner()
{
// QString basePath;
QDirIterator it(this -> basePath, QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext())
{
// QStringList paths;
paths = scanned();
QString path = it.next();
qDebug() << "Collected : " << paths.size();
if (!paths.contains(path)) {
WriteToFile writeToFile(basePath, path);
paths << path;
}
else {
qDebug() << "Already put : " << path;
}
}
}我预计有时我会开始扫描一个分区,但是在程序完成一个分区之前停止它。我想通过在文件的最后一个路径条目的开头加上“最后扫描点”(如果是一个新路径)或最后一个if (!paths.contains(path)) (如果我在检查路径是否已经插入文件时终止了程序)来标记我最后一次停止的位置。
如何检查以LAST-SCAN-POINT开头的行的文本文件
Data.txt
C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7010.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7011.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7012.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7013.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7014.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7015.idrc LAST-SCAN-POINT C:/Program /Adobe/Adobe 2015/插件/布局/(对齐面板资源)/LAST-SCAN-POINT_PNGA/7016.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7017.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7018.idrc C:/Program /Adobe/Adobe InDesign CC 2015/插件/布局/(对齐面板资源)/idrc_PNGA/7019.idrc
发布于 2016-11-12 08:08:54
使用QString::startsWith 方法怎么样?例如:
QString path = "LAST-SCAN-POINT C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7016.idrc";
if(path.startsWith("LAST-SCAN-POINT ")) {
qDebug() << "The path starts with 'LAST-SCAN-POINT '";
} else {
qDebug() << "The path does not start with 'LAST-SCAN-POINT '!";
}发布于 2016-11-12 08:17:41
为了简单地搜索txt文件中的“最后扫描点”,您可以这样做:
int readFile(std::string path)
{
std::ifstream filestream(path);
std::string line;
char lsp[16];
int i = 0;
while (std::getline(filestream, line))
{
std::stringstream linestream;
linestream << line;
linestream.get(lsp, 16);
if (std::string(lsp) == "LAST-SCAN-POINT")
{
filestream.close();
return i;
}
i++;
}
filestream.close();
return -1;
}这将返回行的最后扫描点是打开或-1,如果它不存在.
发布于 2016-11-16 12:40:01
只需使用readLine QFile (docs here http://doc.qt.io/qt-4.8/qiodevice.html#readLine)实时读取一行,然后使用Moe Abdul-Hameed所示的QString的startsWith函数。
https://stackoverflow.com/questions/40560118
复制相似问题