一、与文件目录操作有关操作。

Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句。

QDir::drives()是列出电脑根目录下的所有目录,返回的是QFileInfoList。利用其返回的QFileInfo,可以使用QFileInfo::absoluteFilePath()方法为返回其绝对路径。

    Bool QDir::exists ( const QString & name ) 是判断以参数中为路径名的路径是否存在,如果存在该路径则返回真。

   bool QDir::mkpath ( const QString & dirPath ) ,该函数是创建以dirPath为路径的一个路径,如果父路径不存在的话,则一起同时创建;创建成功返回1,否则返回0.

    QFileInfoList QDir::entryInfoList为列出其路径下的所有文件和。目录信息

    bool QFileInfo::isDir是判断其是否为目录,同理。

      bool QFileInfo::isFile是判断其是否为文件。

其中列出根目录和创建目录文件终端输出如下:

   

查询指定目录下的文件和文件夹的后台输出如下:

  

本次实验的代码和注释如下:

#include <QCoreApplication>

#include <QDebug>

#include <QDir>

#include <QString>

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

 //   QDir my_dir("C:\\QtTest");

    QDir my_dir;

  //  my_dir.absolutePath();

    //foreach是Qt中对c++中增加的关键字,foreach (variable, container)

    //其意思是访问遍历第2个参数容器中的所有内容,每次都存入第1个参数变量中

    //QDir::drives()是列出电脑根目录下的所有目录,返回的是QFileInfoList

    foreach(QFileInfo my_info, my_dir.drives())

        {

            //QFileInfo::absoluteFilePath为返回绝对路径,包括名字

            qDebug() << my_info.absoluteFilePath();

        }

  //  qDebug() << my_dir.exists();

    QString mkdir = "C:/QtTest/zzz";

    //如果指定的路径不存在时

    if(!my_dir.exists(mkdir))

        {

            //给my_dir创建一个路径

            my_dir.mkpath(mkdir);

            qDebug() << "Created successed!";

        }

    //指定的路径存在时

    else {

            qDebug() << "Alreadly exists!";

        }

    QDir my_dir1("C:/");

    //QFileInfoList QDir::entryInfoList为列出其路径下的所有文件和

    //目录信息。bool QFileInfo::isDir是判断其是否为目录,同理

    //bool QFileInfo::isFile是判断其是否为文件

    foreach(QFileInfo my_info, my_dir1.entryInfoList())

        {

            if(my_info.isDir())

                    qDebug()<< "Dir: "<<my_info.absoluteFilePath();

            if(my_info.isFile())

                    qDebug()<< "File: "<<my_info.absoluteFilePath();

        }

    return a.exec();

}

  二、与文件读取操作相关。

对文件的操作最常见的就是文件的读取了,传入一个文件名,要向其中写入数据或者读取数据。QFile类中可以完成于文件操作相关的很多内容。另外还有一个文件读取和写入的辅助的类,即QTextStream。有点类似标准C++中的cout,cin等操作,不过这里的对象是Qt,不是终端。

下面的代码完成向一个文件中写入数据然后又向该文件中读出写入的数据这一功能。且在资源文件中把本工程的工程文件加入其中并且读出来了.

  其效果如下:

  

代码和注释如下:

#include <QCoreApplication>

#include <QDebug>

#include <QFile>

#include <QString>

#include <QTextStream>

void write(QString file_name)

{

    //以传入的文件名建立一个文件,传入的文件名包含有目录信息在里面

    QFile file(file_name);

    //以只写和文本的方式打开该文件

    if(!file.open(QFile::WriteOnly | QFile::Text))

    {

       qDebug () << "Could not open the file by reading";

       return;

    }

    //out其实是一个缓冲区

    QTextStream out(&file);

    //输出内容到缓冲区

    out << "hell world!";

    file.flush();//将缓冲区的内容输出的文本

    file.close();//关闭文件

}

void read(QString file_name)

{

    QFile file(file_name);

    //以只读和文本的方式打开该文件

    if(!file.open(QFile::ReadOnly | QFile::Text))

    {

       qDebug () << "Could not open the file by reading";

       return;

    }

    QTextStream in(&file);//me:QDataStream使用类似

    QString text;

    //in >> text;//如果是用这句的话则只是独到了1句而已,即内容hello

    text = in.readAll();//这也写可以全部读完

    qDebug () << text;

    file.close();//关闭文件

}

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

    QString file_name = "C:/QtTest/file.txt";

    write(file_name);

     //  read(file_name);

    //该句表示从资源文件中读取内容。因为一开始我已经在资源文件中

    //添加了qfile.pro文件。

read(":/MyFiles/qfile.pro");

}

  总结:通过这次简单的实验,发现Qt中对文件的操作还是蛮方便的,有很多函数可以用。

转自:http://www.cnblogs.com/tornadomeet/archive/2012/07/31/2616180.html

Qt中与文件目录相关操作的更多相关文章

  1. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  2. Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL

    一    F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...

  3. 4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  4. centos中mariadb的相关操作

    Tip 1 在使用mariadb中启动服务报错 : Failed to start mariadb.service: Unit not found. 解决办法: yum install -y mari ...

  5. esxi网络中虚拟机的相关操作

    一个虚拟机的克隆就是原始虚拟机全部状态的一个备份或镜像.克隆的过程不影响原始虚拟机.而快照指的是虚拟磁盘在某一特定时间点的副本.执行快照将保留虚拟机的状况和数据. 一.实验拓扑图: 目标:克隆虚拟机, ...

  6. 5.QT中关于HTTPClient相关的操作,Json数据传输

     新建项目T12HttpClient T12HttpClient.pro SOURCES += \ main.cpp QT += network CONFIG += C++11 main.cpp ...

  7. Qt中MySQL数据库的操作例程

    数据库连接不成功时,要将libmysql.dll放到C:\Qt\Qt5.11.0\5.11.0\mingw53_32\bin和C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin ...

  8. Python3中的字符串相关操作

    Python3的字符串操作相关函数详解 字符串内建函数 1. capitalize() 将字符串中的第一个字符转换成大写,其他字母变成小写.例: >>> "hello Wo ...

  9. UWP中的文件相关操作

    最近开始做UWP开发,图省事儿就把自己之前一个Winform项目的一部分代码拷贝到了新写的UWP项目中来.整出了一些幺蛾子,下面做一个记录. 首先提一个重点就是:UWP里关于文件的操作尽量用Stora ...

随机推荐

  1. 用Power BI观察经济与健康的关系

    Hans Rosling是卡罗琳学院的国际卫生学教授.这位学者与众不同的技能是数据可视化.以直观的数据展现了令人信服的世界观,而且在gapminder.org提供无偿展示以及下载.假设你没有看过下面的 ...

  2. 解决方案:android monkeyrunner:Timeout while trying to create chimp mananger(device = MonkeyRunner.waitForConnection()一直报错的问题)

    monkeyrunner在执行device = MonkeyRunner.waitForConnection()一直报错的问题 (或者[main] [com.android.chimpchat.adb ...

  3. EditText: android:focusable和android:focusableInTouchMode的区别

    android:focusable之所以有这个属性主要是因为Android系统不仅仅是针对手机的,有可能在电视.手表等等的非触摸输入设备上(如Android TV),这些设备只有物理上下键不具备触摸功 ...

  4. FLINK SQL Calcite原理

    http://wuchong.me/blog/2017/03/30/flink-internals-table-and-sql-api/ https://cloud.tencent.com/devel ...

  5. Java两种方式简单实现:爬取网页并且保存

    注:如果代码中有冗余,错误或者不规范,欢迎指正. Java简单实现:爬取网页并且保存 对于网络,我一直处于好奇的态度.以前一直想着写个爬虫,但是一拖再拖,懒得实现,感觉这是一个很麻烦的事情,出现个小错 ...

  6. Android 编程下 Canvas and Drawables

    Canvas and Drawables 安卓提供了一组绘制二维图形的 API(参考官方文档:Canvas and Drawables | Android Developers),这组 API 允许开 ...

  7. Asp.Net时间方法大全

    DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(- Convert.ToInt32(dt.DayOfWeek.To ...

  8. PostgreSQL建表SQL语句写法

    DROP TABLE IF EXISTS bus; CREATE TABLE bus( id SERIAL PRIMARY KEY, mac ) NOT NULL UNIQUE, route int ...

  9. 解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]

    这里使用的IntelliJ IDEA版本为[IntelliJ IDEA 14.1.4]: 一.控制台打印的程序运行时的log4j日志中包含中文乱码 在IDEA安装目录的bin目录下找到名为" ...

  10. User-Defined-Literal自定义字面量

    c++支持多种内置类型的字面量,比如: 123u // unsigned int 1.0 // double 1.6f // float 'a' // char 4ULL // unsigned lo ...