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
Qt中与文件目录相关操作的更多相关文章
- 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 ...
- Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL
一 F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...
- 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 ...
- centos中mariadb的相关操作
Tip 1 在使用mariadb中启动服务报错 : Failed to start mariadb.service: Unit not found. 解决办法: yum install -y mari ...
- esxi网络中虚拟机的相关操作
一个虚拟机的克隆就是原始虚拟机全部状态的一个备份或镜像.克隆的过程不影响原始虚拟机.而快照指的是虚拟磁盘在某一特定时间点的副本.执行快照将保留虚拟机的状况和数据. 一.实验拓扑图: 目标:克隆虚拟机, ...
- 5.QT中关于HTTPClient相关的操作,Json数据传输
新建项目T12HttpClient T12HttpClient.pro SOURCES += \ main.cpp QT += network CONFIG += C++11 main.cpp ...
- 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 ...
- Python3中的字符串相关操作
Python3的字符串操作相关函数详解 字符串内建函数 1. capitalize() 将字符串中的第一个字符转换成大写,其他字母变成小写.例: >>> "hello Wo ...
- UWP中的文件相关操作
最近开始做UWP开发,图省事儿就把自己之前一个Winform项目的一部分代码拷贝到了新写的UWP项目中来.整出了一些幺蛾子,下面做一个记录. 首先提一个重点就是:UWP里关于文件的操作尽量用Stora ...
随机推荐
- Using ADB and fastboot
What is adb? The Android Debug Bridge (adb) is a development tool that facilitates communication bet ...
- nodepad++ 正则 替换
(?<k1>.*?)\=(?<k2>.*?); cookie.Add(new CookieList() { Key = "\1", Value = &quo ...
- 【Unity】11.3 基本碰撞体(箱体、球形、胶囊、网格)
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 碰撞组件(Collider) 是另一种必须随刚体 (Rigidbody) 添加的组件,以便允许它和其他组件发生碰撞.或者 ...
- VS Code插件Vue2 代码补全工具
一.简介 此扩展将Vue 2代码片段和语法突出显示添加到Visual Studio代码中. 这个插件基于最新的Vue官方语法高亮文件添加了语法高亮,并且依据Vue 2的API添加了代码片段. 支持语言 ...
- ssr.js数据模拟工具
ssr相当于是搭建了一个 Mock Server ,构建假数据,然后把这些假数据存到 JSON 文件上,Mock Server 可以响应请求或者生成页面,当然也可以顺便生成 API 文档. 强制跨域访 ...
- 读取word到二进制,再转成word
static void Main(string[] args) { try { var strParams = new Dictionary<string, string>(); stri ...
- IIS写权限漏洞 (HTTP PUT方法利用)
该漏洞的产生原因来源于服务器配置不当造成,利用IIS PUT Scaner扫描有漏洞的iis,此漏洞主要是因为服务器开启了 webdav的组件导致的可以扫描到当前的操作,具体操作其实是通过webdav ...
- 此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库
警告:此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库.要在没有运行时共享库的情况下进行编译,请将 -static-link-runtime-shared ...
- 【嵌入式】bootloader,linux,filesystem的烧写
平台: 深圳市优龙科技有限公司的FS2410(基于ARM9) 准备: 1.用串口(UART1,J8)线与PC机相连,这个是用来传输数据和显示信息的 2.连接USB数据下载线(usb device),注 ...
- SpringMVC中的 JSR 303 数据校验框架说明
JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中. JSR 303 通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则 ...