QFile 类提供了读取文件的接口。继承于QFileDevice.
QFile 是一种IO设备,用来读写文本和二进制文件和资源。QFile可单独使用,但和QTextStream或QDataStream一起使用更方便。
文件名可以通过构造函数传入,但也可使用setFileName()函数随时传入。QFile使用‘/‘作为分隔符,其他分隔符(如‘\’)不支持。
检查一个文件是否存在使用exists(),移除一个文件使用remove()。更多文件系统相关操作在QFileInfo和QDir中提供。
文件打开使用open(),关闭使用close(),刷新flush()。数据读和写通常用QDataStream或QTextStream,但也可调用从QIODevice继承的函数read(),readLine(),readAll(),write().QFile也继承了getChar(),putChar(),和ungetChar()用于操作字符。
文件大小通过size()返回。当前文件位置pos(),移动到新的文件位置用seek()。如果到达文件结尾,atEnd()返回true。
下面示例按行读取文本文件:
QFile file("in.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; while (!file.atEnd()) { QByteArray line = file.readLine(); process_line(line); }
open() 传入的QIODevice::Text标志告诉Qt将Windows风格的行终止符("\r\n")转换为C++风格的终止符("\n")。 QFile默认操作二进制文件,如QFile不执行任何转换。
下述示例使用QTextStream按行读取文本文件:
QFile file("in.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); process_line(line); }
QTextStram会将存储在磁盘中8位数据转换为16位的Unicode 字符串。默认地,它认为用户系统本地编码是8位(如,大多数Unix系统的UTF-8),可以通过QTextStream::setCodec()修改。
写文本,可以使用<<()操作符。
时间: 2024-10-03 21:53:29