QT中的文件操作基于QFile类。
1、打开文件:open()
bool open(File *fh,QIODevice::OpenMode mode,QFileDevice::FileHandleFlags handleflags = DontCloseHandle);
File *fh:文件的指针
QIODevice::OpenMode mode:打开文件的模式
文件的模式:
QIODevice::NotOpen //没有打开
QIODevice::ReadOnly //以只读的形式打开文件
QIODevice::WriteOnly //以只写的形式打开文件,请注意,此模式意味着截断。
QIODevice::ReadWrite//打开文件时可读可写
QIODevice::Append //以追加的形式打开文件
QIODevice::Truncate //以截取的形式打开文件
QIODevice::Text //打开文本文件
QIODevice::Unbuffered //无缓冲形式打开文件,绕过设备中的任何缓冲区。
QIODevice::NewOnly //如果要打开的文件已存在则失败。仅在文件不存在时创建并打开该文件
QIODevice::ExistingOnly
如果要使用多种模式打开文件,那么在模式之间用“|”符号连接
QFileDevice::FileHandleFlags handleflags = DontCloseHandle:打开文件的处理标志
返回值:如果文件打开成功返回true,否则返回false
virtual bool open(QIODevice::OpenMode mode) override
参数1--QIODevice::OpenMode mode:打开文件的模式
2、读取文件:read()
virtual qint64 readData(char *data,qint64 len) override
override:这是C++中的保留字,区分上下文,作用是为了防止出现意外的继承行为
返回值:qint64 -->longlongint
char *data:从data里面读取数据
qint64 len:读取的长度
QByteArray read(qint64 maxSize)
返回值:QByteArray--字节数组
qint64 maxSize:从文件里读取maxSize大小的数据
QByteArray readAll()
返回值:QByteArray--字节数组
从文件里一次性读取所有内容并存入到QByteArray变量里
qint64 readLine(char *data, qint64 maxSize)
返回值:qint64----longlongint
char *data:从data中按行读取数据
qint64 maxSize:从data中按行读取数据的最大长度
QByteArray readLine(qint64 maxSize = 0)
返回值:QByteArray--字节数组
qint64 maxSize = 0:按行读取文件里最大的数据的长度
3、写入文件:write()
virtual qint64 writeData(const char *data, qint64 len) override
向指定的缓冲区里写入内容
const char *data:写入的内容保存的位置
qint64 len:写入缓冲区里的字符的长度
qint64 write(const char *data, qint64 maxSize)
向指定的缓冲区里写入内容
const char *data:写入的内容保存的位置
qint64 maxSize:写入缓冲区里的字符的最大长度
4、关闭文件:close()
close(关闭的文件)
5、文件读写的两种方式(文本流、数据流),跟文件读写类似
(1)、文本流:用于读写文本内容。类:QTextStream
QTextStream()
QTextStream(QIODevice *device)
QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)
QTextCodec * codec() const; //获取操作文件的里文本内容的编码格式
QString readAll(); //以文本流的方式读取文件的内容
QString readLine(qint64 maxlen = 0); //以行的方式读取文本内容
QTextCodec *codecForName(const QByteArray &name)//告诉编译器本地编码格式
QTextCodec *codecForName(const char *name);
void setCodec(QTextCodec *codec) //用于设置文本内容的编码格式
void setCodec(const char *codecName)//用于设置文本内容的编码格式,setCodec(“UTF-8”)--setCode(“utf-8”)
运算符重载的方法来实现文本流输入输出:
QTextStream &operator<<(const char *string) //将const char *string类型的数据存入到文本流里
QTextStream &operator>>(QString &str)//将文本流里的数据存入到QString &str里
(2)、数据流:用于读写二进制数据,类:QDataStream
QDataStream()
QDataStream(QIODevice *d)
QDataStream(QByteArray *a, QIODevice::OpenMode mode)
QDataStream(const QByteArray &a)
int readRawData(char *s, int len) //从数据流里读取len个数据
运算符重载的方法来实现数据流输入输出:
QDataStream &operator<<(const char *s) //向数据流里存入数据
QDataStream &operator>>(const char *s) //从数据流里读取数据
6、获取文件信息,类:QFileInfo
QFileInfo()
QFileInfo(const QString &file)
QFileInfo(const QFile &file)
QFileInfo(const QDir &dir, const QString &file)
QFileInfo(const QFileInfo &fileinfo)
QString absoluteFilePath() const //获取文件的绝对路径,包含文件名
QString absolutePath() const //获取文件的绝对路径,不包含文件名
QString baseName() const //获取文件名称
QString bundleName() const //获取文件名,但是没有后缀---macos&ios
QString fileName() const //获取文件名
QString filePath() const //获取文件路径
qint64 size() const //获取文件的大小
QString suffix() const //获取文件的后缀
void swap(QFileInfo &other) //交换文件信息管理的对象
7、文件目录,类:QDir
QDir(const QDir &dir)
QDir(const QString &path = QString())
QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
QString absoluteFilePath(const QString &fileName) const //获取文件的绝对路径
QString absolutePath() const//获取文件的绝对路径,不包含文件名
bool cd(const QString &dirName) //QDir dir dir.cd("D:/") 切换到不同的目录 ,切换成功 true,切换失败--false
QString dirName() const //获取目录的名称
bool mkdir(const QString &dirName) const //创建目录
bool mkpath(const QString &dirPath) const //创建文件路径
bool remove(const QString &fileName) //移除文件
bool rmdir(const QString &dirName) const //移除文件包括路径,使用时尤其注意
bool rmpath(const QString &dirPath) const //移除文件路径