QFile是一个输入/输出设备,用于读取和写入文本,二进制,文件和资源。QFIle可以单独使用,也可以和QTextStream和QDataStream一起使用。
#include "mainwindow.h"
#include <QApplication>
#include <QFile>
#include <QTextStream>
int main(int argc, char* argv[])
{
// QT文件操作
qDebug() << argc; // argc是输入参数的数据量,可以通过argv[argc]获取数据
qDebug() << argv[0]; // 0是当前文件
QFile f("test.txt");
qDebug() << f.exists(); //文件是否存在
if (argc != 2) {
qWarning("请给出文件名称");
return 1;
}
QFile file(argv[1]);
QTextStream stream(&file); // 需要一个指针参数,数据的地址及指针
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QString data;
QByteArray line = file.readLine();
qDebug() << line;
file.seek(0); // seek跳转到文件头
data = stream.readAll();
qDebug() << data;
qDebug() << "++++++++++++++++++++";
file.seek(0);
while (!stream.atEnd()) {
qDebug() << stream.readLine();
}
}
file.close();
//写文件
QTextStream s(&file);
if (file.open(QIODevice::WriteOnly)) {
s << "张三\r\n";
s << "李四\r\n";
}
file.close();
qDebug() << file.fileName();
return 0;
}
文件拷贝
#include "mainwindow.h"
#include <QApplication>
#include <QFile>
#include <QTextStream>
int main(int argc, char* argv[])
{
// QT文件操作
//拷贝文件
QFile::copy("test.txt", "file.txt");
return 0;
}
QDir目录结构
对目录结构进行访问
#include "mainwindow.h"
#include <QApplication>
#include <QDir>
#include <QFileInfoList>
#include <QTextStream>
int main(int argc, char* argv[])
{
// QT文件操作
QDir dir;
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); //文件,隐藏的,不要链接文件
dir.setSorting(QDir::Size | QDir::Reversed); //排序,通过大小,反向排序
QFileInfoList info = dir.entryInfoList(); //返回QList对象列表,里面是QLFileInfo
qDebug() << info;
QList entry_list = dir.entryList();
qDebug() << entry_list; //返回QList
for (auto& filename : info) {
qDebug() << filename << "大小为" << filename.size() << "文件名" << filename.fileName();
}
for (QString& f : entry_list) {
qDebug() << f;
}
if (dir.mkdir("mydir")) {
qDebug() << "创建成功";
}
if (dir.exists("mydir")) {
dir.rename("mydir", "dir");
}
return 0;
}
#include "mainwindow.h"
#include <QApplication>
#include <QDir>
#include <QFileInfoList>
#include <QTextStream>
int main(int argc, char* argv[])
{
// QT文件操作
QDir dir;
qDebug() << dir.current(); //获取当前工作目录 currentPath是字符串形式
qDebug() << dir.currentPath(); //获取当前工作目录 currentPath是字符串形式
qDebug() << dir.home(); //用户目录
QString home = dir.homePath();
qDebug() << home;
qDebug() << "+++++++++++";
qDebug() << dir.root(); //根目录
qDebug() << dir.temp(); //临时目录
return 0;
}
QFileInfo
作用是获取文件的信息
#include "mainwindow.h"
#include <QApplication>
#include <QDir>
#include <QFileInfoList>
#include <QTextStream>
int main(int argc, char* argv[])
{
// QT文件操作
QFileInfo info("test.txt");
qDebug() << info.fileName(); //文件名称
qDebug() << info.filePath(); //文件路径
qDebug() << info.filesystemAbsoluteFilePath();
return 0;
}