QT读取文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT读取文本文件相关的知识,希望对你有一定的参考价值。

在一个函数里,我先用Qprocess对象调用start函数,执行shell命令,把结果重定向到文本文件a,然后我用QTextString读取a,但每次读取都是空的。但我打开里面是有内容的。现在确定和Qprocess对象调用start函数有关,但不知道原因及解决方法,求高人指教

据我所知,QTextString这个类貌似是不存在的。倒是有个QTextStream类可以用来读取文本数据。
例如下面的函数可以读取小文本文件中的内容
void MainWindow::readFile(const QString& fpath)

if(fpath.isEmpty())
return;

QFile file(fpath);

if(!file.open(QIODevice::ReadOnly|QIODevice::Text))

qDebug()<<"Open file failure!";
return;

QTextStream fs(&file);
QString fileContent (fs.readAll());

qDebug()<<"The content of file is \n"<<fileContent;


你需要确保你将正确的文件路径传递给了该函数,否则会导致打开文件失败。追问

我是用了QTextStream……提问时打错了。文本读取这部分是没问题的。我都说了打开文件可以看到里面的内容,不是空的

追答

如果你文件路径正确,那么肯定可以读出文件内容的。你需要确认你程序中的文件路径是不是正确的。

追问

我都说了是Qprocess对象调用start函数的问题。我sleep一段时间就可以读了。但具体原因未知。可能是Qprocess对象调用start函数会把原文件内容删除,但又来不及写入吧,哥猜的

追答

最大的可能还是你在用shell命令重定向写入这个操作还未完成之前就去读取了该文件。你用QTimer轮询读取就知道了。

参考技术A 据我所知,QTextString这个类貌似是不存在的。倒是有个QTextStream类可以用来读取文本数据。
例如下面的函数可以读取小文本文件中的内容
void
MainWindow::readFile(const
QString&
fpath)

if(fpath.isEmpty())
return;
QFile
file(fpath);
if(!file.open(QIODevice::ReadOnly|QIODevice::Text))

qDebug()<<"Open
file
failure!";
return;

QTextStream
fs(&file);
QString
fileContent
(fs.readAll());
qDebug()<<"The
content
of
file
is
\n"<<fileContent;

你需要确保你将正确的文件路径传递给了该函数,否则会导致打开文件失败。

Qt读取文本文件乱码怎么办

参考技术A 设置编码读取:
QTextStream in(&file);
in.setCodec("UTF-8");
while (!in.atEnd())

QString strRead = in.readLine();

以上是关于QT读取文本文件的主要内容,如果未能解决你的问题,请参考以下文章

Qt读取文本文件的一些信息

Qt读取文本文件乱码怎么办

从文本文件读取,然后写入 QT 中的同一文件(高分功能)

在Qt中以二进制形式读取0和1文本文件[重复]

在textedit Qt C ++中读取文本文件

尝试打开并读取 .txt 文件,但它从原始文件中删除了实际文本(Qt GUI C++