QT5开发笔记(十二)--文件及磁盘操作
相关类说明:
QT提供了QFile类用于进行文件操作的读写接口,可以读写文本文件、二进制文件等,
文本文件用QTextStream;
二进制文件用QDataStream;
目录文件用QDir类;
文件信息采用QFileInfo;
监视文件和目录变化使用QFileSystemWatcher;
临时文件使用QTempporaryFile类。
示例文件:
QFile file("./rain.wav");
if(!file.open(QIODevice::ReadWrite))
{
return; // 打开文件失败
}
// 创建读写二进制文件流
QDataStream *inhnld= new QDataStream(&file);
// 读二进制数据
ret = inhnld->readRawData(buff, 1024);
// 关闭文件
file.close();
打开文件对话框:
/// 多种文件类型用;;分割
QString filename = QFileDialog::getOpenFileName(this,
"打开视频",
QDir::homePath(),
tr("wmv(*.wmv|*.mp4);;AVI(*.avi);;MP4(*.mp4)"));
qDebug() << filename;
打开保存对话框:
/// 多种文件类型用;;分割
QString filename = QFileDialog::getSaveFileName(this,
"打开视频",
QDir::homePath(),
tr("wmv(*.wmv|*.mp4);;AVI(*.avi);;MP4(*.mp4)"));
qDebug() << filename;
打开路径对话框:
QString path = QFileDialog::getExistingDirectory(this, "保存路径", QDir::homePath());
获取路径:
QString path = QFileInfo(filename).absolutePath();
获取文件名:
file_name = info.fileName();
fileName = fileName.split(".",QString::SkipEmptyParts).at(0); /// 去除扩展名
file.suffix(); /// 扩展名
删除指定扩展名的文件:
QDir dir("./");
foreach(QFileInfo file, dir.entryInfoList())
{
if(file.isFile() && file.suffix() == "png")
{
dir.remove(file.fileName());
}
}
递归删除指定目录:
QDir dir("./png");
dir.removeRecursively();
获取应用程序的路径:
QString cfg_path = qApp->applicationDirPath();
QString app_file = qApp->applicationFilePath()
判断文件或目录是否存在:
QDir d;
if(d.exists(cfg_path))
{
}
QFileInfo f;
if(f.exists(file))
{
}