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