现在的位置: 首页 > 综合 > 正文

用Qt进行文件的读写操作

2013年10月07日 ⁄ 综合 ⁄ 共 812字 ⁄ 字号 评论关闭

操作文件是各种语言和类库的基本功能. Qt是如何读写文件的呢?

在Qt的文档有就有答案. 在QFile的文档中指出了几种操作文件的方法, 其中QTextStream是比较好理解和使用的:

读取操作:

The next example uses QTextStream to read a text file line by line:

     QFile file("in.txt");

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

         return;

     QTextStream in(&file);

     while (!in.atEnd()) {

         QString line = in.readLine();

         //process string line here

     }

写入操作:

     QFile file("out.txt");

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

         return;

     QTextStream out(&file);

     out << "The magic number is: " << 49 << "\n";

比较让人疑惑的地方是为什么QFile在open()之后没有调用close().

后来查了文档, 在QFile的析构里有这样的说明:

Destroys the file object, closing it if necessary.

表示析构里可以自动close(). 不过良好的习惯还是在适当的地方自己close()一下.

有open()就有close(), 有new就有delete, 以后代码的阅读者看着也放心, 不会嘀咕怎么似乎没有close.

还有一点很重要的是, 读取文本类型文件(比如txt)用QTextStream, 而读取二进制文件的时候(比如图片或者exe或者PDF文件)要用QDateStream这个类.

进一步说, 由于QFile继承自QIODevice, 可以直接用QFile进行读写操作, 文档里也有例子, 就不细说了.

抱歉!评论已关闭.