QT文件和目录
一、文件操作
QFile和QFileInfo:
#include <QCoreApplication>
#include <QFileInfo>
#include <QStringList>
#include <QDateTime>
#include <QDebug> int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//以只写方式打开,如果文件不存在,那么会创建该文件
QFile file("myfile.txt");
if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
qDebug()<<file.errorString();
file.write("helloQt!\nyafeilinux");
file.close();
//获取文件信息
QFileInfo info(file);
qDebug()<<QObject::tr("绝对路径:")<<info.absoluteFilePath()<<endl
<<QObject::tr("文件名:")<<info.fileName()<<endl
<<QObject::tr("基本名称:")<<info.baseName()<<endl
<<QObject::tr("后缀:")<<info.suffix()<<endl
<<QObject::tr("创建时间")<<info.created()<<endl
<<QObject::tr("大小")<<info.size();
//以只读方式打开
if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
qDebug()<<file.errorString();
qDebug()<<QObject::tr("文件内容:")<<endl<<file.readAll();
qDebug()<<QObject::tr("当前位置")<<file.pos();
file.seek();
QByteArray array;
array = file.read();
qDebug()<<QObject::tr("前5个字符:")<<array
<<QObject::tr("当前位置:")<<file.pos();
file.seek();
array = file.read();
qDebug()<<QObject::tr("第16-20个字符")<<array;
file.close(); return a.exec();
}
总结:
QFile file("myfile.txt"); //创建一个文件,里面是路径 file.open(QIODevice::WriteOnly|QIODevice::Text) //以只读打开,写text
file.write("helloQt!\nyafeilinux"); //写入
file.close(); //关闭
file.seek(0); //定位
array = file.read(5); //读取
QObject::tr("绝对路径:")<<info.absoluteFilePath()<<endl
QObject::tr("文件名:")<<info.fileName()<<endl
QObject::tr("基本名称:")<<info.baseName()<<endl
QObject::tr("后缀:")<<info.suffix()<<endl
QObject::tr("创建时间")<<info.created()<<endl
QObject::tr("大小")<<info.size();
QObject::tr("当前位置")<<file.pos();
二、文件系统和监视器QFilesystemWatcher
首先创建一个MainWindow的QT项目,然后在控件中添加一个List Widget部件:
mainwindow.h添加:
QFileSystemWatcher myWatcher;
void showMessage(const QString &path);
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(&myWatcher,SIGNAL(directoryChanged(QString)),this,SLOT(showMessage(QString)));
connect(&myWatcher,SIGNAL(fileChanged(QString)),this,SLOT(showMessage(QString)));
//显示出当前目录下的所有.h文件
QDir myDir(QDir::currentPath()); //相当于linux下的ls命令的输出
myDir.setNameFilters(QStringList("*.h")); //然后筛选的后缀为.h的文件
ui->listWidget->addItem(myDir.absolutePath()+tr("目录下的.h文件有:")); //这里显示的是绝对路径
ui->listWidget->addItems(myDir.entryList()); //这里输出了用setNameFilters过滤后的信息
//创建目录,并将其加入到监视器中
myDir.mkdir("mydir"); //创建了一个目录
myDir.cd("mydir"); //linux内的cd指令
ui->listWidget->addItem(tr("监视的目录:")+myDir.absolutePath());
myWatcher.addPath(myDir.absolutePath()); //把目录加到myWatcher中
//创建文件,并将其加入到监视器中
QFile file(myDir.absolutePath()+"/myfile.txt"); //myDir的目录是会通过cd()改变的
if(file.open(QIODevice::WriteOnly)) //创建文件
{
QFileInfo info(file);
ui->listWidget->addItem(tr("监视的文件:")+info.absoluteFilePath()); //监视的路径
myWatcher.addPath(info.absoluteFilePath()); //增加监视的路径
file.close();
}
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::showMessage(const QString &path)
{
QDir dir(QDir::currentPath()+"/mydri");
//如果是目录发生了改变
if(path == dir.absolutePath())
{
ui->listWidget->addItem(dir.dirName()+tr("目录发生改变:"));
ui->listWidget->addItems(dir.entryList());
}
else //如果是文件发生了改变
{
ui->listWidget->addItem(path+tr("文件发生改变!"));
}
}
QT文件和目录的更多相关文章
- Qt5.7中使用MySQL Driver(需要把libmysql.dll文件拷贝到Qt的bin目录中。或者自己编译的时候,链接静态库)
Qt5.7中使用MySQL Driver 1.使用环境 Qt5.7的安装安装就已经带了MySQL Driver,只需要在安装的时候选择一下即可.如果没有安装,可以采取自己编译的方式.在Qt的源码包的q ...
- 通过pro文件使Qt的build目录更清爽
1.指定moc存放的路径,Qt moc编译器生成的moc文件 unix:MOC_DIR = ../tmp win32:MOC_DIR = ../tmp 2.指定目标文件存放的路径,生成的dll或者ex ...
- Qt 文件处理(readLine可以读取char[],并且有qSetFieldWidth qSetPadChar 等全局函数)
Qt 文件处理 Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFil ...
- 用QFileSystemWatcher来监视文件和目录的改变(内部还是使用了timer)
Use Case: 两个程序共享同一个Configuration文件,当一个程序作出改变的时候,需要另外一个程序能够及时响应. 之前其实猜的八九不离十,估计是有一个Timer,然后定时查询Config ...
- error: open of glibc-devel-2.12-1.132.el6.i686.rpm failed: 没有那个文件或目录
在安装qt的时候出现了错误: error: open of glibc-devel-2.12-1.132.el6.i686.rpm failed: 没有那个文件或目录 错误原因:缺少glibc-dev ...
- Qt 文件的操作
文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...
- Qt warning: 构建目录必须和源文件目录为同级目录
从一台电脑转移项目到另一电脑, 路径发生变化,重新构建运行时会出现“QT 构建目录必须和源目录为同级目录”提示,解决办法很加单.如下: 方法一: 点击 project(项目)->然后,看看Bui ...
- QT文件(夹)操作---QFile、QDir、QFileInfo、QTextStream和QDataStream异同
1.1 文件和目录 QFile.QBuffer和QTcpSocket可支持读写设备,用open函数打开,用write或putChar函数写入.用read和readLine或readAll进行读取 ...
- Qt文件读写操作
原文地址:https://www.cnblogs.com/flowingwind/p/8336159.html QFile Class 1.read读文件 加载文件对象 QFile file(&qu ...
随机推荐
- 从头开始开发一个vue幻灯片组件
首先新建项目vue init webpack projectName 安装依赖包npm i这些就不说了 接下来就是构建我们的swiper组件 因为我写的代码不规范, 通不过eslint的检测, 会频繁 ...
- 【2019 Multi-University Training Contest 4】
01:https://www.cnblogs.com/myx12345/p/11644076.html 02: 03:https://www.cnblogs.com/myx12345/p/116478 ...
- flutter中的列表组件
列表布局是我们项目开发中最常用的一种布局方式.Flutter 中我们可以通过 ListView 来定义列表项,支持垂直和水平方向展示.通过一个属性就可以控制列表的显示方向.列表有以下分类: 垂直列表 ...
- Axure RP 8.0软件安装教程
Axure8.0(32/64)位下载地址: 链接:https://pan.baidu.com/s/1qYSLkKW 密码:skaw 软件介绍: Axure RP是一个专业的快速原型设计工具,让负责定义 ...
- 使用selenium+BeautifulSoup 抓取京东商城手机信息
1.准备工作: chromedriver 传送门:国内:http://npm.taobao.org/mirrors/chromedriver/ vpn: selenium BeautifulSo ...
- 建站手册-浏览器信息:苹果 Safari 浏览器
ylbtech-建站手册-浏览器信息:苹果 Safari 浏览器 1.返回顶部 1. http://www.w3school.com.cn/browsers/browsers_safari.asp 2 ...
- 119、TensorFlow如何创建计算图
#Dataflow是并行化编程常用的方式 #当使用TensorFlow执行你的程序的时候有以下几个优点 #1.并行化 .通过声明的边来代表操作之间的依赖 # 对系统来说确定可以并行化的操作是比较容易的 ...
- Vue-随笔小记
注:本文属个人随笔记录,如有错误请大家多多指正 1.vue.nextTick([callback,context]) 参数: {function}[context] {Object}[context] ...
- Html5 学习笔记 【PC固定布局】 实战7 风景欣赏 联系我们
风景欣赏最终效果: 关于公司最终效果: 风景欣赏Html代码: <!DOCTYPE html> <html lang="zh-cn"> <head&g ...
- centos6.8安装redis
1.下载Redis3.2.5安装包 cd /optwget http://download.redis.io/releases/redis-3.2.5.tar.gz 2.解压.编译.安装redis-3 ...