Qt中与文件目录相关操作

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

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

时间: 2024-10-11 04:50:29

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

JS中字符串的相关操作

(转自:http://www.cnblogs.com/zhaoxinxin/articles/1402733.html) 一.字符串的创建 创建一个字符串有几种方法. 最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量. var myStr = "Hello, String!"; 可以用双引号或单引号将字符串包含,但要注意,作为界定字符串的一对引号必须是相同的,不能混用. 像var myString = "Fluffy is a pretty cat.'; 这样

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

 新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CONFIG += C++11 MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget>   class MyWidget : public QWidget {     Q_OBJECT public:     expli

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

 新建项目T12HttpClient T12HttpClient.pro SOURCES += \ main.cpp QT += network CONFIG += C++11 main.cpp #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply>   int main(int arg

swift中array的相关操作

1,数组基本操作  //插入元素,替换插入后第一个元素 var aa = [1,2,3,4] aa[1...1] = [6,7,8] println("\(aa)") //插入元素,不替换插入后第一个元素 aa = [1,2,3,4] aa[3..3] = [6,7,8] println("\(aa)") //插入元素,替换插入后第一个元素,在最后一个元素后插入不可用...运算 var bb = [1,2,3,4] bb[4..4] = [6,7,8] printl

Matlab中对于文件目录等操作的一系列函数【转】

FROM:http://www.ilovematlab.cn/thread-164384-1-1.html 1.        filesep 用于返回当前平台的目录分隔符,Windows是反斜杠(\),Linux是斜杠(/).2.        fullfile 用于将若干字符串连接成一个完整的路径.例如: >> f=fullfile('D:','Matlab','example.txt') f=D:\Matlab\example.txt (在Windows中,“D:\”表示D盘,“D:”表

3.QT中的debug相关的函数,以及文件锁的使用

 1  新建项目T33Debug main.cpp #include <QDebug> #include <QFile> #include <QMutex>   //文件锁 void MyMessageHandler(QtMsgType type,const QMessageLogContext &context,const QString &msg) { //使用一个文件锁,当在写文件的时候,要等写完之后才能继续执行 static QMutex m

python中MySQL数据库相关操作

一 安装基本环境: 1 安装MySQL数据库, 本文使用的是mariadb数据库,与MySQL相似 1 挂载镜像文件(本次使用的是本地镜像文件) 2 启动MySQL数据库 3 创建用户名和密码并刷新 grant all(表示所有操作) on .(库.表(所有的,也可以指定)) to [email protected](设置用户名为root,链接为本地链接) identified by 'roiot123';(设置密码)flush privileges;(刷新权限) 4 修改默认字符集: serv

POI开发:Java中的Excel相关操作

一.Apache POI 1.简介: Apache POI支持大多数中小规模的应用程序开发,提供API给Java程序对Microsoft Office格式档案读和写的功能,呈现和文本提取是它的主要特点. 2.结构: HSSF: 提供读写Microsoft Excel XLS格式档案的功能. XSSF: 提供读写Microsoft Excel OOXML XLSX格式档案的功能. HWPF: 提供读写Microsoft Word DOC格式档案的功能. HSLF: 提供读写Microsoft Po

js 中对象--属性相关操作

查询属性: 可以用 对象.属性 来查询属性和属性方法               或者                    对象[“属性”]  来查询属性和属性方法 演示代码: 1 <script> 2 var obj ={ 3 username:"ziksang", 4 age:22, 5 addr:"北京", 6 say:function(){ 7 return "我的名字叫 "+this.username //解析this,此