京剧蟒袍的颜色:Qt--读写文件

来源:百度文库 编辑:偶看新闻 时间:2024/05/04 14:09:45

操作文件是各种语言和类库的基本功能. 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进行读写操作, 文档里也有例子, 就不细说了.