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读取文本文件的主要内容,如果未能解决你的问题,请参考以下文章