一、文件操作

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文件和目录的更多相关文章

  1. Qt5.7中使用MySQL Driver(需要把libmysql.dll文件拷贝到Qt的bin目录中。或者自己编译的时候,链接静态库)

    Qt5.7中使用MySQL Driver 1.使用环境 Qt5.7的安装安装就已经带了MySQL Driver,只需要在安装的时候选择一下即可.如果没有安装,可以采取自己编译的方式.在Qt的源码包的q ...

  2. 通过pro文件使Qt的build目录更清爽

    1.指定moc存放的路径,Qt moc编译器生成的moc文件 unix:MOC_DIR = ../tmp win32:MOC_DIR = ../tmp 2.指定目标文件存放的路径,生成的dll或者ex ...

  3. Qt 文件处理(readLine可以读取char[],并且有qSetFieldWidth qSetPadChar 等全局函数)

    Qt 文件处理 Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFil ...

  4. 用QFileSystemWatcher来监视文件和目录的改变(内部还是使用了timer)

    Use Case: 两个程序共享同一个Configuration文件,当一个程序作出改变的时候,需要另外一个程序能够及时响应. 之前其实猜的八九不离十,估计是有一个Timer,然后定时查询Config ...

  5. 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 ...

  6. Qt 文件的操作

    文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...

  7. Qt warning: 构建目录必须和源文件目录为同级目录

    从一台电脑转移项目到另一电脑, 路径发生变化,重新构建运行时会出现“QT 构建目录必须和源目录为同级目录”提示,解决办法很加单.如下: 方法一: 点击 project(项目)->然后,看看Bui ...

  8. QT文件(夹)操作---QFile、QDir、QFileInfo、QTextStream和QDataStream异同

    1.1    文件和目录 QFile.QBuffer和QTcpSocket可支持读写设备,用open函数打开,用write或putChar函数写入.用read和readLine或readAll进行读取 ...

  9. Qt文件读写操作

    原文地址:https://www.cnblogs.com/flowingwind/p/8336159.html QFile Class 1.read读文件 加载文件对象  QFile file(&qu ...

随机推荐

  1. loadRunner函数之web_add_header

    web_add_header 功能:用于添加指定的报文头到下一次HTTP请求 格式:web_add_header( const char *Header, const char *Content ), ...

  2. .NET Core 构建跨平台的桌面应用

    1.运行环境 开发工具:Visual Studio 2017 JDK版本:.NET Core 2.0 项目管理工具:nuget 2.GITHUB地址 https://github.com/nbfujx ...

  3. spring-boot和redis的缓存使用

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.Maven Plugin管理 pom.xml配置代码: <?xml versio ...

  4. (三)修改内核大小,适配目标板Nand flash分区配置

    一. 修改内核大小 1. 在你的配置文件下uboot/include/config/xxx.h 里面有一个宏定义 #define MTDPARTS_DEFAULT "mtdparts=jz2 ...

  5. 八. jenkins参数化构建 git分支

    使用git管理代码时往往会有多分支开发,这时部署通过修改配置不试用.可以通过参数化构建. 1.通过字符参数方式 新建一个maven项目,选择参数化构建过程-字符参数,如下: 源码管理中配置如下: 其它 ...

  6. java并发编程笔记(六)——AQS

    java并发编程笔记(六)--AQS 使用了Node实现FIFO(first in first out)队列,可以用于构建锁或者其他同步装置的基础框架 利用了一个int类型表示状态 使用方法是继承 子 ...

  7. 测开之路四十二:常用的jquery事件

    $(‘selector’).click() 触发点击事件$(‘selector’).click(function) 添加点击事件$(‘selector’).dbclick() 触发双击事件$(‘sel ...

  8. apm 应用性能管理(启动优化/ 掉帧卡顿/ 耗电/ 内存泄漏等)

    APM 首先查看各个阶段耗时 : (环境变量设置 dyldPRINTSTATISTICS = 1选项,) 1. 启动优化 关键: 找到耗时的原因 t总 = t1 (premain) + t1(main ...

  9. win10下cmd备注

    要复制cmd里的字符串,右键选标记,选中待复制的字符串,ctrl+c 复制,ctrl+v粘贴内容(或者右键选择复制).这项操作支持复制cmd里的内容到其他地方,如txt里 win10之前cmd不支持c ...

  10. Linux崩溃时启动脚本获取进程相关信息

    编写test.cpp #include <stdlib.h> #include <stdio.h> #include <exception> #include &l ...