使用 QFile 读取多个文件
Reading multiple files with QFile
我想读取多个文件。我在 QFile
中遇到错误,因为它一次只读取一个文件。
- 我该如何解决这个问题?
- 以及如何迭代我的文件并使用它们。
QStringList fileNames;
fileNames = QFileDialog::getOpenFileNames(this,
tr("choose"),
"up.sakla",
tr("choosen(*.up)"));
if (fileNames.isEmpty())
return;
QFile file(fileNames);
file.open(QIODevice::ReadOnly);
QDataStream in ( & file);
QString str;
qint32 a; in >> str >> a;
正如你在官方看到的那样here
This is a convenience static function that will return one or more existing files selected by the user.
另一方面,QFile 构造函数不接受 QStringList(doc)
你可以做的是遍历列表中的每个元素
for(auto x : fileNames)
{
QFile file(x);
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
QString str;
qint32 a;
in >> str >> a;
}
我了解到您的文件夹中有一些文件,并且您想阅读文件列表(您通过 QFileDialog
选择的文件)
完整代码如下:
#include <QApplication>
#include <QFileDialog>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStringList fileNames;
fileNames = QFileDialog::getOpenFileNames(nullptr, "choose", "up.sakla", "choosen(*.up)");
for (auto xfile : fileNames)
{
QFile file (xfile);
file.open(QIODevice::ReadOnly);
QTextStream in(&file);
QString str;
while (!in.atEnd())
{
//read all the file content as a text
str = in.readAll();
qDebug() << str;
}
}
return app.exec();
}
如果每个文件的内容如下:
- 文件 1 内容
File1 11
- 文件 2 内容
File1 12
- 文件 3 内容
File1 13
程序的输出如下:
"File3 13\n \n"
"File1 11\n \n"
"File2 12\n \n"
我想读取多个文件。我在 QFile
中遇到错误,因为它一次只读取一个文件。
- 我该如何解决这个问题?
- 以及如何迭代我的文件并使用它们。
QStringList fileNames;
fileNames = QFileDialog::getOpenFileNames(this,
tr("choose"),
"up.sakla",
tr("choosen(*.up)"));
if (fileNames.isEmpty())
return;
QFile file(fileNames);
file.open(QIODevice::ReadOnly);
QDataStream in ( & file);
QString str;
qint32 a; in >> str >> a;
正如你在官方看到的那样here
This is a convenience static function that will return one or more existing files selected by the user.
另一方面,QFile 构造函数不接受 QStringList(doc)
你可以做的是遍历列表中的每个元素
for(auto x : fileNames)
{
QFile file(x);
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
QString str;
qint32 a;
in >> str >> a;
}
我了解到您的文件夹中有一些文件,并且您想阅读文件列表(您通过 QFileDialog
选择的文件)
完整代码如下:
#include <QApplication>
#include <QFileDialog>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStringList fileNames;
fileNames = QFileDialog::getOpenFileNames(nullptr, "choose", "up.sakla", "choosen(*.up)");
for (auto xfile : fileNames)
{
QFile file (xfile);
file.open(QIODevice::ReadOnly);
QTextStream in(&file);
QString str;
while (!in.atEnd())
{
//read all the file content as a text
str = in.readAll();
qDebug() << str;
}
}
return app.exec();
}
如果每个文件的内容如下:
- 文件 1 内容
File1 11
- 文件 2 内容
File1 12
- 文件 3 内容
File1 13
程序的输出如下:
"File3 13\n \n"
"File1 11\n \n"
"File2 12\n \n"