赞
踩
目录
- QFile 是⽤于⽂件操作和⽂件数据读写的类,使⽤ QFile 可以读写任意格式的⽂件。
- QSaveFile 是⽤于安全保存⽂件的类。使⽤ QSaveFile 保存⽂件时,它会先把数据写⼊⼀个临时⽂件,成功提交后才将数据写⼊最终的⽂件。如果保存过程中出现错误,临时⽂件⾥的数据不会被写 ⼊最终⽂件,这样就能确保最终⽂件中不会丢失数据或被写⼊部分数据。 在保存⽐较⼤的⽂件或复杂格式的⽂件时可以使⽤这个类,例如从⽹络上下载⽂件等。
- QTemporaryFile 是⽤于创建临时⽂件的类。使⽤函数 QTemporaryFile::open() 就能创建⼀个⽂件名唯⼀的临时⽂件,在 QTemporaryFile 对象被删除时,临时⽂件被⾃动删除。
- QTcpSocket 和 QUdpSocket 是分别实现了 TCP 和 UDP 的类。
- QSerialPort 是实现了串⼝通信的类,通过这个类可以实现计算机与串⼝设备的通信。
- QBluetoothSocket 是⽤于蓝⽛通信的类。⼿机和平板计算机等移动设备有蓝⽛通信模块,笔记本 电脑⼀般也有蓝⽛通信模块。通过QBluetoothSocket类,就可以编写蓝⽛通信程。如编程实现笔记本电脑与⼿机的蓝⽛通信。
- QProcess 类⽤于启动外部程序,并且可以给程序传递参数。
- QBuffer 以⼀个 QByteArray 对象作为数据缓冲区,将 QByteArray 对象当作⼀个 I/O 设备来读写。
- 读数据:QFile 类中提供了多个⽅法⽤于读取⽂件内容;如 read()、readAll()、readLine()等。
- 写数据:QFile 类中提供了多个⽅法⽤于往⽂件中写内容;如 write()、writeData()等。
- 关闭⽂件:⽂件使⽤结束后必须⽤函数 close() 关闭⽂件。
QIODevice::NotOpen
|
没有打开设备
|
QIODevice::ReadOnly
|
以只读⽅式打开设备
|
QIODevice::WriteOnly
|
以只写⽅式打开设备
|
QIODevice::ReadWrite
|
以读写⽅式打开设备
|
QIODevice::Append
|
以追加⽅式打开设备,数据将写到⽂件末尾
|
QIODevice::Truncate
|
每次打开⽂件后重写⽂件内容,原内容将被删除
|
QIODevice::Text
|
在读⽂件时,⾏尾终⽌符会被转换为 '\n';当写⼊⽂件时,⾏尾终⽌符会被转换为 本地编码。如 Win32上为'\r\n';
|
QIODevice::Unbuffered
|
⽆缓冲形式打开⽂件,绕过设备中的任何缓冲区
|
QIODevice::NewOnly
|
⽂件存在则打开失败,不存在则创建⽂件
|
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QStatusBar>
- #include <QFileDialog>
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- this->setWindowTitle("记事本");
- //获取菜单栏
- QMenuBar* menuBar = new QMenuBar();
- this->setMenuBar(menuBar);
-
- //添加菜单
- QMenu* menu = new QMenu("文件");
- menuBar->addMenu(menu);
-
- //添加菜单项
- QAction* action1 = new QAction("打开");
- QAction* action2 = new QAction("保存");
- menu->addAction(action1);
- menu->addAction(action2);
-
- //指定一个输入框
- edit = new QPlainTextEdit();
- this->setCentralWidget(edit);
- QFont font;
- font.setPixelSize(20);
- edit->setFont(font);
-
- //绑定槽函数
- connect(action1,&QAction::triggered,this,&MainWindow::handleAction1);
- connect(action2,&QAction::triggered,this,&MainWindow::handleAction2);
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- //打开文件
- void MainWindow::handleAction1()
- {
- //1.先弹出“打开文件”对话框,让用户选择打开哪个文件
- QString path = QFileDialog::getOpenFileName(this);
-
- //2.把文件名显示到状态栏里
- QStatusBar* statusBar = this->statusBar();
- this->setStatusBar(statusBar);
- statusBar->showMessage(path);
-
- //3.根据用户选择的路径,构造一个QFile对象,并打开文件
- QFile file(path);
- bool ret = file.open(QIODevice::ReadOnly);
- if(!ret)
- {
- //打开文件失败
- statusBar->showMessage(path+"打开文件失败!");
- return;
- }
-
-
- //4.读取文件
- QString text = file.readAll();
-
- //5.关闭文件!
- file.close();
- //6.读到的内容设置到输入框中
- edit->setPlainText(text);
-
- }
- //保存文件
- void MainWindow::handleAction2()
- {
- //1.先弹出“保存文件” 对话框
- QString path = QFileDialog::getSaveFileName(this);
-
- //2.在状态栏中显示这个文件名
- QStatusBar* statusBar = this->statusBar();
- this->setStatusBar(statusBar);
- statusBar->showMessage(path);
-
- //3.根据用户选择的路径,构造一个QFile对象,并打开文件
- QFile file(path);
- bool ret = file.open(QFile::WriteOnly);
- if(!ret)
- {
- statusBar->showMessage(path+"打开失败!");
- return;
- }
-
- //4.写文件
- const QString& text = edit->toPlainText();
- file.write(text.toUtf8());
-
- //5.关闭文件
- file.close();
-
- }
-
效果如下:
- isDir() 检查该⽂件是否是⽬录;
- isExecutable() 检查该⽂件是否是可执⾏⽂件;
- fileName() 获得⽂件名;
- completeBaseName() 获取完整的⽂件名;
- suffix() 获取⽂件后缀名;
- completeSuffix() 获取完整的⽂件后缀;
- size() 获取⽂件⼤⼩;
- isFile() 判断是否为⽂件;
- fileTime() 获取⽂件创建时间、修改时间、最近访问时间等;
- void MainWindow::on_pushButton_clicked()
- {
- QString path = QFileDialog::getOpenFileName(this);
-
- QFileInfo fileInfo(path);
-
- qDebug()<<"文件名:"<<fileInfo.fileName();
- qDebug()<<"文件大小:"<<fileInfo.size();
- qDebug()<<"文件路径:"<<fileInfo.filePath();
- //……
- }
-
- //⽂件名
- qDebug() << "⽂件名为:" << fileinfo.fileName().toUtf8().data();
- //⽂件后缀名
- qDebug() << "后缀名为:" << fileinfo.suffix().toUtf8().data();
- //⽂件⼤⼩
- qDebug() << "⽂件⼤⼩为:" << fileinfo.size();
- //⽂件路径
- qDebug() << "⽂件路径为:" << fileinfo.path().toUtf8().data();
- //判断是否为⽂件
- qDebug() << "是否为⽂件:"<< fileinfo.isFile();
- //⽂件创建时间
- QDateTime time1 = fileinfo.fileTime(QFileDevice::FileBirthTime);
- qDebug() << "创建时间为:" << time1.toString("yyyy-MM-dd hh:mm:ss").toUtf8().data();
- //⽂件的最后修改⽇期
- QDateTime time2 = fileinfo.lastModified();
- qDebug() << "最后修改时间为:"<< time2.toString("yyyy-MM-dd hh:mm:ss").toUtf8().data();
- //判断是否为⽂件夹
- qDebug() << "是否为⽬录:" << fileinfo.isDir();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。