1.相关类处理
QFile、QTextStream、QFileInfo
QFile:文件基本操作
QTextStream:文本流--会自动处理编码转换,解决一些乱码问题
QFileInfo:操作文件信息
2.QFile:
2.1 继承关系
QObject--QIODevice--QFileDevice--QFile
QIODevice:QT对输入输出设备抽象,提供了操作设备的一系列接口。
接口:
QFile(const QString & name) //使用文件名构造一个QFile对象,文件名可以包含路径和文件名
void setFileName(const QString & name) //如果构造没指定,也可以通过这个接口指定一下
bool exists() //判断文件是否存在
bool open(OpenMode mode) //从QIODevice继承,
OpenMode取值:
QIODevice::ReadOnly
QIODevice::WriteOnly
QIODevice::ReadWrite
...
bool remove() //删除文件
bool rename(const QString & newName) //重命名文件
qint64 read(char * data, qint64 maxSize)
QByteArray read(qint64 maxSize) //读取最大maxSize字节并返回一个QByteArray
QByteArray readAll() //读取缓冲区所有数据并返回一个QByteArray
qint64 write(const char * data, qint64 maxSize)
qint64 write(const QByteArray & byteArray)
qint64 pos() const //得到当前读写指针的位置
bool seek(qint64 pos) //重新设置读写指针位置
bool QFileDevice::resize(qint64 sz)
重设文件大小,可用于清空文件,比如resize(0)
Signals:
void readyRead()
当文件有数据时候,会触发此信号
2.2 编程实例
a.创建一个read.txt文件,在里面写入英文内容。使用QFile类读取文件中内容,
并显示到界面组件。打开文件使用绝对路径。
b.将英文内容换成中文,再次读取,看是否会成功。
c.转换文件编码格式为utf-8,再次读取。
3.QTEXTSTREAM
QTextStream(QIODevice * device)
QString read(qint64 maxlen)
QString readAll()
QTextStream & operator<<(任意类型)
QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对程序员是透明的。
系统本地编码使用如下方法告知QTextStream。
QTextCodec *code = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForLocale(code);
编程实例:
创建一个write.txt文件,使用QTextStream类往文件写入内容,提前指定系统编码。
4.QFILEINFO:方便的获取文件的某些属性
QFileInfo(const QString & file)
QString absoluteFilePath() //返回文件绝对路径,包含文件名
QString absolutePath() //不包含文件名
QString baseName() const //文件名,不包含扩展名
bool exists() const //是否存在
bool isFile()
bool isDir()
bool isSymLink()
...
qint64 size() const //文件大小
编程实例:文件拷贝器
窗口上放置一个按钮和一个进度条部件,点击按钮后,
打开对话框选择源文件,选择后再打开对话框选择
目标文件存放位置和名称,然后进行拷贝操作。