Qt基础知识(2):文件和目录操作

        Qt 为文件和目录操作提供了一些类,利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类主要包括以下几个:

  • QCoreApplication:用于提取应用程序路径、程序名等文件信息
  • QFile: 除了打开文件操作外,QFile 还有复制文件、删除文件等功能
  • QFileInfo:用于提取文件的信息,包括路径、文件名、后缀等。
  • QDir: 用于提取目录或文件信息,获取一个目录下的文件或目录列表,创建或删除目录和文件,文件重命名等操作。
  • QTemporaryDir和QTemporaryFile:用于创建临时目录和临时文件
  • QFileSystemWatcher: 文件和目录监听类,监听目录下文件的添加、删除等变化,监听文件修改变化。

这些类基本涵盖了文件操作需要的主要功能,有些功能还在某些类里重复出现,例如 QFile和 QDir 都具有删除文件、判断文件是否存在的功能。

1.文件操作

文件打开方式:

QIODevice::NotOpen

未打开

QIODevice::ReadOnly

以只读方式打开

QIODevice::WriteOnly

以只写方式打开

QIODevice::ReadWrite

以读写方式打开

QIODevice::Append

以追加的方式打开,新增加的内容将被追加到文件末尾

QIODevice::Truncate

以重写的方式打开,在写入新的数据时会将游标设置在文件开头

QIODevice::Text

在读取时,将行结束符转换成 \n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 \r\n

QIODevice::Unbuffered

忽略缓存

(1)打开文件并执行读写操作

     //以可读可写的方式打开文件
     QFile file("1.txt");
     if(!file.open(QIODevice::ReadWrite | QIODevice::Text))
     {
         qDebug()<<"文件打开失败";
         return;
     }
    
     //读取文件内容
    QString str=file.readAll();
    qDebug()<

(2)获取文件的属性信息

    //查看文件属性
    QFileInfo info(file);
    qDebug()<

(3)文件对话框

    QString filter="文本文件(*.txt);;程序文件(*.jpg *.gif);;所有文件(*.*)";//文件过滤器
    
    //选择一个文件打开(必须是已经存在的文件)
    QString filename=QFileDialog::getOpenFileName(this,"操作提示","./",filter);
    qDebug()<
2.目录操作
    qDebug()<
3.临时文件操作
    //临时文件的使用(临时文件在函数结束时,或者执行close()之后,就会自动删除)
    QTemporaryFile file;
    if(!file.open())
    {
        qDebug()<<"临时文件创建失败";
        return;
    }
    qDebug()<
4.临时目录操作
    //临时目录(在函数结束时,或者执行了remove()之后,临时目录会自动删除)
    QTemporaryDir dir;
    qDebug()<
5.其他

QDir::Dirs

列出与筛选器匹配的目录

QDir::AllDirs

列出与筛选器匹配的目录、列出所有目录;即不将过滤器应用于目录名

QDir::Files

列出文件

QDir::Drives

列出磁盘驱动器(在Unix下被忽略)

QDir::NoSymLinks

不要列出符号链接(被不支持符号链接的操作系统忽略)

QDir::NoDotAndDotDot

不要列出特殊条目“.”和“..”

QDir::NoDot

不要列出特殊条目“.”

QDir::NoDotDot

不要列出特殊条目“..”

QDir::AllEntries

列出目录、文件、驱动器和符号链接(除非指定System,否则不会列出损坏的符号链接)

QDir::Readable

列出应用程序具有读取权限的文件。Readable值需要与Dirs或Files组合使用

QDir::Writable

列出应用程序具有写访问权限的文件。“可写入”值需要与“目录”或“文件”组合使用

QDir::Executable

列出应用程序具有执行访问权限的文件。Executable值需要与Dirs或Files组合

QDir::Modified

仅列出已修改的文件(在Unix上被忽略)

QDir::Hidden

列出隐藏文件(在Unix上,以“.”开头的文件)

QDir::System

列出系统文件(在Unix上,包括FIFO、套接字和设备文件;在Windows上,包括.lnk文件)

QDir::CaseSensitive

过滤器应区分大小写

(1)遍历目录及其子目录下的文件和文件夹

QDirIterator是一个类,用于遍历目录及其子目录下的文件和文件夹。在下面这个例子中,我们创建了一个QDirIterator对象dir_it,指定了要遍历的目录为curr_path/record,并且设置了遍历的选项为Dirs(只遍历目录)和NoDotAndDotDot(不包括 “.” 和 “”)。同时,通过设置Subdirectories选项为true,可以递归地遍历所有子目录。

QDirIterator dir_it(QString("%1/record").arg(curr_path), QDir::Dirs|QDir::NoDotAndDotDot, QDirIterator::Subdirectories);

(2)遍历目录下的文件和文件夹

QDir dir = QDir(list.first());
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
dir.setSorting(QDir::Time);
QFileInfoList file_list = dir.entryInfoList();

你可能感兴趣的:(Qt技能知识,qt)