《QT5.9 c++ 开发指南》7.3文件目录写法

好长时间没有记录了,这个程序写过了,目的只是为了记录其中的一些简单的用法。

文件目录操作相关的类:

  • 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");
}

每个函数用法很多,建议把项目下载下来,来学习,让你尽快的练习,并且去掌握它。一起加油。

发布了40 篇原创文章 · 获赞 13 · 访问量 5884

猜你喜欢

转载自blog.csdn.net/weixin_42126427/article/details/104799056