好长时间没有记录了,这个程序写过了,目的只是为了记录其中的一些简单的用法。
文件目录操作相关的类:
- QCoreApplication :用于提取应用程序路径 、程序名等文件信息 。
- QFile : 除了打开文件操作外, QFile 还有复制文件、删除文件等功能。
- QFilelnfo:用于提取文件的信息,包括路径、文件名、后缀等。
- QDir:用 于提取目录或文件信息,获取一个目 录下的文件或目录列表 ,创建或删除目录和文件,文件重命名等操作。
- QTemporaryDir 和 QTemporaryFile :用于创建 临时目 录和临时文件。
- QFileSystemWatcher : 文件和目录监听类 , 监昕目录下文件的添加、删除等变化,监昕文件修改变化 。
话不多说了让我们开始:
先上运行的图:
链接:程序连接 提取码:1obk
喜欢的小伙伴可以下载此程序,点个赞就可以了
那我们开始分析吧:
QCoreApplication 类:
QCoreApplication 是为无 GUI 应用提供事件循环的类,是所有应用程序类 的基类,其子类QGuiApplication 为有 GUI 界面的应用程序提供流控制和主要的设定, QGuiApplication 的 子类QApplication 为基于 QWidget 的应用程序提供支持,包括界面的初始化等 。
QCoreApplication 的有用函数:
- QString applicationDirPath() 返回应用程序启动路径径
- QString applicationFilePath() 运回应用程序的带有目录的完整文件名
- QString applicationName() 返回应用程序名称,无路径无后缀
- QString ListlibraryPaths() 返回动态加载库文件时 , 应用程序搜索的目录列表
- void setOrganizationName(QString &orgName) 为应用程序设置个机构名
- QString organizationName() 返回应用程序的机构名
- void exit() 退出应用程序
下面让我们看一下运用代码吧:
QString str=QCoreApplication::applicationDirPath();
ui->plainTextEdit->appendPlainText(str+"\n");
QString str=QCoreApplication::applicationFilePath();
ui->plainTextEdit->appendPlainText(str+"\n");
QString str=QCoreApplication::applicationName();
ui->plainTextEdit->appendPlainText(str+"\n");
QStringList strList=QCoreApplication::libraryPaths();
for (int i=0;i<strList.count();i++)
ui->plainTextEdit->appendPlainText(strList.at(i));
ui->plainTextEdit->appendPlainText("");
QString str=QCoreApplication::organizationName();
ui->plainTextEdit->appendPlainText(str+"\n");
QFile 类
QFile 的一些静态函数:
- bool copy(QString &fileName, QString &newName) 复制文件
- bool rename(QString &oldName, QString &newName) 重命名文件
- bool remove(QString & fileName) 删除文件
- bool exists(QString & fileName) 判断文件是否存在
- bool setPermissions(QString &fileName , Permissions permissions) 设置文件的权限,权限类型是枚举类型QFi leDevice::Pennission
- Permissions permissions(QString &fileName) 返回文件的权限
QFile 的一些成员函数:
- void setFileName(QString &name) 设置文件名 , 文件己打开后不能再谓用此函数
- bool copy(QString &newName) 当前文件复制为 newName 表示的文件
- bool rename(QString &newName) 将当前文件重命名为 newName
- bool remove() 删除当前文件
- booI exists() 判断当前文件是否存在
- bool setPermissions(Permissions permissions) 设置文件权限
- Permissions permissions() 返回文件的权限
- qint64 size() 返回文件的大小,字节数
QString sous=ui->editFile->text(); //源文件
QFileInfo fileInfo(sous);//
QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix();
QFile::copy(sous,newFile);
ui->plainTextEdit->appendPlainText("源文件:"+sous);
ui->plainTextEdit->appendPlainText("复制为文件:"+newFile+"\n");
QString sous=ui->editFile->text(); //源文件
QFile file(sous);
QFileInfo fileInfo(sous);//
QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix();
file.copy(newFile);
ui->plainTextEdit->appendPlainText("源文件:"+sous);
ui->plainTextEdit->appendPlainText("复制为文件:"+newFile+"\n");
QString sous=ui->editFile->text(); //源文件
bool the=QFile::exists(sous);
if(the)
ui->plainTextEdit->appendPlainText(+"true \n");
else
ui->plainTextEdit->appendPlainText(+"false \n");
QString sous=ui->editFile->text(); //源文件
QFile file(sous);
bool the=file.exists();
if(the)
ui->plainTextEdit->appendPlainText(+"true \n");
else
ui->plainTextEdit->appendPlainText(+"false \n");
QString sous=ui->editFile->text(); //源文件
QFile::remove(sous);
ui->plainTextEdit->appendPlainText("删除文件:"+sous+"\n");
QString sous=ui->editFile->text(); //源文件
QFile file(sous);
file.remove();
ui->plainTextEdit->appendPlainText("删除文件:"+sous+"\n");
还有很多写法这里不再多介绍,请看项目中的程序。
QFilelnfo 类
QFileinfo 类的接口函数提供文件的各种信息 。QFilelnfo 对象创建时可以指定 一个文件名作为当前文件,也可以用 setFile()函数指定一个文件作为当前文件 。
QString sous=ui->editFile->text(); //源文件
QFileInfo fileInfo(sous);//源文件信息
QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+".XYZ"; //更改文件后缀为".XYZ"
QFile::rename(sous,newFile); //重命名文件
ui->plainTextEdit->appendPlainText("源文件:"+sous);
ui->plainTextEdit->appendPlainText("重命名为:"+newFile+"\n");
QDir 类
Dir 是进行目录操作的类,在创建 QDir 对象时传递一个目录字符串作为当前目录,然后 QDir函数就可以针对当前目录或目录下的文件进行操作。
QString curDir=QDir::currentPath();
QDir lastDir(curDir);
ui->plainTextEdit->appendPlainText("选择目录之前:"+lastDir.absolutePath());
QString aDir=QFileDialog::getExistingDirectory(this,"选择一个目录",curDir,QFileDialog::ShowDirsOnly);
if (aDir.isEmpty())
return;
ui->editDir->setText(aDir);
lastDir.setPath(aDir);
ui->plainTextEdit->appendPlainText("选择目录之后:"+lastDir.absolutePath()+"\n");
更多的写法请看例子。这里不多介绍。
QTemporaryDir 和 QTemporaryFile
QTemporaryDir的一些成员函数:
- void setAutoRemove(bool b) 设置为是否自动删除
- QString path() 返回创建的临时目录名称
- bool remove() 删除此临时目录及其下面所有文件
QFileSystemWatcher 类
QFileSystemWatcher 是对目录和文件进行监听的类。 把某些目录或文件添加到 QFileSystemWatcher 对象的监昕列表后 ,当目录下发生文件新建 、删除等操作时会发射 directoryChanged ()信号 ,当监听的文件发生修改、 重命名等操作时, 会发射 fileChanged()信号。 所以,这个类在进行目录或文件监听时起作用 。
ui->plainTextEdit->appendPlainText("监听目录:"+ui->editDir->text()+"\n");
fileWatcher.addPath(ui->editDir->text());//添加监听目录
fileWatcher.addPath(ui->editFile->text());//添加监听文件
QObject::connect(&fileWatcher,&QFileSystemWatcher::directoryChanged,
this,&Dialog::on_directoryChanged); //directoryChanged
QObject::connect(&fileWatcher,&QFileSystemWatcher::fileChanged,
this,&Dialog::on_fileChanged); //fileChanged
fileWatcher.removePath(ui->editDir->text());//
fileWatcher.removePath(ui->editFile->text());//
QObject::disconnect(&fileWatcher,&QFileSystemWatcher::directoryChanged,
this,&Dialog::on_directoryChanged); //directoryChanged
QObject::disconnect(&fileWatcher,&QFileSystemWatcher::fileChanged,
this,&Dialog::on_fileChanged); //fileChanged
有在头文件加上:
private:
QFileSystemWatcher fileWatcher;
public slots:
void on_directoryChanged(const QString path);
void on_fileChanged(const QString path);
void Dialog::on_directoryChanged(const QString path)
{ //directoryChanged()信号的槽函数
ui->plainTextEdit->appendPlainText(path);
ui->plainTextEdit->appendPlainText("目录发生了变化\n");
}
void Dialog::on_fileChanged(const QString path)
{//fileChanged()信号的槽函数
ui->plainTextEdit->appendPlainText(path);
ui->plainTextEdit->appendPlainText("文件发生了变化\n");
}
每个函数用法很多,建议把项目下载下来,来学习,让你尽快的练习,并且去掌握它。一起加油。