一、文件操作

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. 远程仓库(GitHub)的使用

    1.注册登录 在 GitHub 上注册登录 暂时忽略不讲 2.创建新的远程仓库 在GitHub网站上创建新的仓库.不管你是先在本地创建仓库还是先在远程创建仓库,要想把代码提交到远程仓库都是要先手动创建 ...

  2. 【BZOJ3756】Pty的字符串(广义后缀自动机)

    题意: 思路:论文题 建立Trie树的后缀自动机需要换这个长的板子 #include<bits/stdc++.h> using namespace std; typedef long lo ...

  3. linux系统下tomcat应用开机自启动 配置

    linux系统下tomcat应用开机自启动 配置 相对简单的方式是将tomcat添加为系统服务第一步  复制文件将 $Tomcat_Home/bin目录下的 catalina.sh脚本文件复制到目录/ ...

  4. vue搭配的UI框架 pc端 + 移动端

    PC桌面端UI框架: 1,iview      (最新,用户评分高功能多炫酷 解决和避免了其他UI框架出现的一些小问题) 2, bootstrap  (使用用户最多样式死板没特色) 3,Element ...

  5. C# JS 前后端互传数据

    ---恢复内容开始--- 后端: public void ProcessRequest(HttpContext context) { context.Response.ContentType = &q ...

  6. nginx的配置系统

    nginx的配置系统由一个主配置文件和其他一些辅助的配置文件构成.这些配置文件均是纯文本文件,全部位于nginx安装目录下的conf目录下. 配置文件中以#开始的行,或者是前面有若干空格或者TAB,然 ...

  7. 15. Jmeter-配置元件二

    jmeter-配置元件介绍与使用 JDBC Connection Configuration Java请求默认值 密钥库配置 LDAP Extended Request Defaults LDAP请求 ...

  8. Android深度探索-卷1第二章心得体会

    这章介绍了搭建Android开发环境的的搭建,主要是在Linux上搭建Android开发环境总体来说因为都是在Linux下开发的,so,只介绍了在Linux环境下的搭建在搭建过程中全是命令操作,和Wi ...

  9. 【软件安装】——Robot Framework

    Robot Framework安装(win10) 一. 安装python 1.安装python2.7到本地,双击安装包进行安装,一般放入D盘,文件名默认Python27: 安装完成后进行版本检验,调出 ...

  10. 将QTP运行时的错误截图上传到QC

    Class QCImageErrorCapture Sub Class_Terminate() 'Check if the current test has failed. If failed the ...