QT中的文件操作

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 //移除文件路径

        
   

你可能感兴趣的:(QT,文件操作,qt)