文件系统
Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力,下面是 I/O 设备的类图:
- QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口
- QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现
- QFlie:访问本地文件或者嵌入资源;
- QTemporaryFile:创建和访问本地文件系统的临时文件;
- QBuffer:读写QbyteArray, 内存文件;
- QProcess:运行外部程序,处理进程间通讯;
- QAbstractSocket:所有套接字类的父类;
- QTcpSocket:TCP协议网络数据传输;
- QUdpSocket:传输 UDP 报文;
- QSslSocket:使用 SSL/TLS 传输数据;
文件操作
QFile提供了从文件中读取和写入数据的能力,通常会将文件路径作为参数传给QFile的构造函数,也可以在创建好对象最后,使用setFileName()来修改。可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数
注意:有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取
案例:显示路径到标题框,显示内容到文本框
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击选取文件按钮 弹出文件对话框
connect(ui->pushButton,&QPushButton::clicked,[=](){
//弹出文件对话框 第一个参数:父类指针 第二个参数:对话框标题 第三个参数:默认路径
QString file_path =QFileDialog::getOpenFileName(this,"打开文件","Z:");
//将选取的文件路径放入到lineEdit中 =>放到文本框当中
ui->lineEdit->setText(file_path);
//将文件的内容读取到textEdit当中
QFile file(file_path); //参数:需要文件的路径
file.open(QIODevice::ReadOnly);//指定打开方式
//方法1:一次读取所有的内容
//QByteArray array = file.readAll();
//ui->textEdit->setText(array);//将读取到的数据 放入textEdit中
//方法2:按行读取
QByteArray array;
while( !file.atEnd())
{
array += file.readLine(); //按行读 追加到array
}
ui->textEdit->setText(array);//将读取到的数据 放入textEdit中
//关闭文件对象
file.close();
});
}
对文件进行写操作
file.open(QIODevice::Append); //用追加方式进行写
file.write("啊啊啊啊啊");
file.close();
获取文件相关信息
//QFileInfo 文件信息类
QFileInfo info(file_path);
//size返回的是字节数
qDebug() << "大小:" << info.size() << " 后缀名:" << info.suffix() << " 文件名称:"<<info.fileName() << " 文件路径:"<< info.filePath();
qDebug() << "创建日期:" << info.created().toString("yyyy/MM/dd hh:mm:ss");
qDebug() << "最后修改日期:"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");
文章评论