文本文件读写
1.QFile类的IODevice直接读写
2.QFile和QTextStream结合,用流的方式读写
重点函数
1.QFile(const QString &name); //得到QFile对象
2.bool open(OpenMode flags) Q_DECL_OVERRIDE; //打开文件
3.读函数
QByteArray read(qint64 maxlen);
QByteArray readAll();
QByteArray readLine(qint64 maxlen = 0);
4.写函数 ,由于没有直接写行的函数,需要自己谢“\n”,用来换行
qint64 write(const char *data);
inline qint64 write(const QByteArray &data)
5.关闭:
virtual void close() Q_DECL_OVERRIDE;
流的方式
QFile aFile(aFileName);
bool open(OpenMode flags) Q_DECL_OVERRIDE; //打开文件
QTextStream aStream(&aFile); //用文本流读取文件
写函数: << 由于没有直接写行的函数,需要自己谢“\n”,用来换行
读函数:
QString readLine(qint64 maxlen = 0);
QString readAll();
QString read(qint64 maxlen);
解决汉字乱码问题
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec); //解决汉字乱码问题
QFile file("style.qss");
file.open(QFile::ReadOnly);
QString stylesheet = QString::fromLatin1(file.readAll());
this->setStyleSheet(stylesheet);
二进制文件读写:
有两种格式文件:stm(qt预定义编码文件) 和bat(标准编码文件)
使用QFile 和 QDatastream 进行读写。
stm(qt预定义编码文件):
QDataStream aStream(&aFile);//操作和使用QTextStream 一样的,只是在读取时只能用运算操作符“ >>”
函数:
1.inline void QDataStream::setVersion(int v) //流的版本号,qt预定义编码文件需要设置版本号
2.写函数 << //不管是什么数据类型
3.读函数 >>
标准编码文件
标准编码文件无须指定
QDataStream版本,但可以有必要指定字节序。
void setByteOrder(ByteOrder); //设置字节序函数 ,在x86电脑都是小端字节序
写函数:
QDataStream &writeBytes(const char *, uint len); //用于字符串数据,因为写入字符串之前会先写入字符串的长度
int writeRawData(const char *, int len); //不会写入长度
读函数:
QDataStream &readBytes(char *&, uint &len);
int readRawData(char *, int len);
QCoreApplication 是所有的应用程序类的基类,用于提取应用文件的名称、路径等
其QCoreApplication 子类QGuiApplication 是GUI界面的应用程序提供流控制等
QGuiApplication 的子类 QApplication 是基于qwidget 提供支持,包括界面初始化
static QString applicationDirPath();
static QString applicationFilePath();
static QString applicationName();
static QStringList libraryPaths();
QFile 除了打开关闭文件、读写文件外,还有复制、删除文件的功能 删除: bool remove(); static bool remove(const QString &fileName);
复制:
bool copy(const QString &newName);
static bool copy(const QString &fileName, const QString &newName);
文件是否存在
bool exists() const;
static bool exists(const QString &fileName);
文件大小
qint64 size() const Q_DECL_OVERRIDE;
QFileInfo 提取文件的信息,包括路径、文件名、后缀
QString filePath() const; QString absoluteFilePath() const; QString canonicalFilePath() const; QString fileName() const; QString baseName() const; QString completeBaseName() const; QString suffix() const; QString bundleName() const; QString completeSuffix() const; QString path() const; QString absolutePath() const; QString canonicalPath() const; QDir dir() const; QDir absoluteDir() const;
QDir :用于提取目录或文件信息,获取目录下的文件或目录列表,创建、删除目录
static inline QDir home() { return QDir(homePath()); } static QString homePath(); static inline QDir root() { return QDir(rootPath()); } static QString rootPath(); bool exists() const; bool isRoot() const; QStringList entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const; //获取目录下的目录或文件 QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const;
QFileSystemWatcher 对目录或文件监听的类 bool addPath(const QString &file); QStringList addPaths(const QStringList &files); bool removePath(const QString &file); QStringList removePaths(const QStringList &files); QStringList files() const; QStringList directories() const; 信号: void fileChanged(const QString &path, QPrivateSignal); void directoryChanged(const QString &path, QPrivateSignal);