1.1    文件和目录

QFile、QBuffer和QTcpSocket可支持读写设备,用open函数打开,用write或putChar函数写入。用read和readLine或readAll进行读取数据,最后用 close函数进行关闭设备。

1.1.1            QFile读写文件

QFile构造函数输入参数文件路径和文件名称

setFileName:设置文件路径函数来设置;

exists:检查文件是否存在。

remove:删除文件

open:打开文件

(1)QFile实例代码:

QFile file("/home/administrator/testdir/test.txt");  //相对或者绝对路径

if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {

qDebug()<<"Can't open the file!"<<endl;

}

while(!file.atEnd()) {

QByteArray line = file.readLine();

QString str(line);

qDebug()<< str;

}

1.1.2            QTextStream和QDataStream异同

QTextStream和QDataStream都是面向数据流的,都适用于QIODevice,TextStream能做的事情QDataStream都能做。QTextStream 侧重于文本读写。这里所说的文本指的是普通的简单的QChar,QString,QLatin1Char,int等等之内的。而QDataStream则像一个容器一样,可以存放结构体等复杂数据类型,将数据序列化后按照先进先出的原则进行存储,存入的顺序和读出的顺序一定要一致,否则无法得到正确的数据。不仅可以读写text,而且还好可以读写一个特定数据类型,比如QPoint, QFont,几乎Qt支持的所有类型都可以使用QDataSream进行操作。

(1)QTextStream写入文本到文件

//下面代码就是写文件操作
QDir::setCurrent(QCoreApplication::applicationDirPath());//设置当前目录为程序运行目录

QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);

out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "
}

(2)QDataSream 写入结构体到文件

就拿读写QPoint为例:

QDir::setCurrent(QCoreApplication::applicationDirPath());//设置当前目录为程序运行目录

QFile fileout("file.dat");

fileout.open(QIODevice::WriteOnly);

QDataStream out(&fileout);   // we will serialize the data into the file

out << QString("the answer is");   // serialize a string

out << (qint32)42;        // serialize an integer

QPoint pos(8, 6);//序列化一个点到文件

out << pos;//序列化一个点到文件

fileout.close();//一定要关闭,否则下面读不到数据

QFile filein("file.dat");

filein.open(QIODevice::ReadOnly);

QDataStream in(&filein);    // read the data serialized from the file

QString str;

qint32 a;

QPoint tmp;

in >> str >> a>>tmp; // extract "the answer is" and 42

1.1.3            QIODevice类

QIODevice直接继承自QObject,QIODevice类是输入/输出设备的基类。为设备提供了公共实现和抽象接口用于读写块数据。QIODevice是一个抽象类,不能被实例化Q3Socket, Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSocket,QNetworkReply,QProcess继承。

read,readLine,readAll读取文件中的数据;

write写入数据;

getChar,putChar,ungetChar函数实现单个字符的操作;

size:获取文件大小;

seek:定位到文件任意位置;

pos:获取当前位置;

atEnd判断是否到文件末尾;

1.1.4            QFileInfo类

构造函数传入QFile参数

SetFile设置QFile参数

Path:获取文件路径

FileName:获取文件的名称

baseName:获取文件基本名称

suffix:获取文件名称后缀

isFile,isDir,isSymLink 判断文件类型

实例代码

#include <QtCore/QCoreApplication>

#include <QFileInfo>

#include <QDebug>

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QFileInfo info1("E:/meego/vi_command.lnk");

qDebug() << info1.isSymLink();

qDebug() << info1.absoluteFilePath();

qDebug() << info1.size();

qDebug() << info1.symLinkTarget();

qDebug() << "**********************";

QFileInfo info2(info1.symLinkTarget());

qDebug() << info2.isSymLink();

qDebug() << info2.absoluteFilePath();

qDebug() << info2.size();

return a.exec();

}

1.2    QDir类

QDir类提供了访问目录结构和他们的内容。

QDir类提供了访问目录结构和它们的内容的与平台无关的方式。

QDir用来操作路径名称、关于路径和文件的访问信息和操作底层文件系统。

QDir使用相对或绝对文件路径来指向一个文件。绝对路径是从目录分隔符“/”或者带有一个驱动器标识(除了在Unix下)。如果你总是使用“/”作为目录分隔符,Qt将会把你的路径转化为符合底层的操作系统的。相对文件名是由一个目录名称或者文件名开始并且指定一个相对于当前路径的路径。

例如绝对路径:

QDir("/home/administrator/soft");

QDir("D:/software");

我们可以使用isRelative()或isAbsolute()函数确认QDir是用的相对路径还是绝对路径。使用makeAbsolute()来转换相对路径的QDir转换成绝对路径的QDir.

int main(int argc, char *argv[])

{

QCoreApplication app(argc, argv);

QDir dir;

dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);

dir.setSorting(QDir::Size | QDir::Reversed);

QFileInfoList list = dir.entryInfoList();

std::cout << " Bytes Filename" << std::endl;

for (int i = 0; i < list.size(); ++i) {

QFileInfo fileInfo = list.at(i);

std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)

.arg(fileInfo.fileName()));

std::cout << std::endl;

}

return 0;

}

QT文件(夹)操作---QFile、QDir、QFileInfo、QTextStream和QDataStream异同的更多相关文章

  1. [No000083]文件与文件夹操作

    #region Folder option 文件夹操作 /// <summary> /// 指定目录是否存在 /// </summary> /// <param name ...

  2. PHP 文件夹操作「复制、删除、查看大小」递归实现

    PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...

  3. .Net文件*夹*操作

    一.文件夹操作 Directory类,DirectoryInfo类.使用using System.IO命名空间 (一)创建文件夹 方法一: private string path = @"F ...

  4. iOS开发——Swift篇&文件,文件夹操作

    文件,文件夹操作   ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作:   1,遍 ...

  5. Python的文件与文件夹操作

    Python的文件与文件夹操作 Python OS模块 1.重命名:os.rename(old, new) 2.删除:os.remove(file) 3.列出目录下的文件 :os.listdir(pa ...

  6. linux —— 学习笔记(文件、文件夹操作)

    目录:1.常用的文件文件夹操作 2.文件属性的设置 1.常用的文件文件夹操作 mkdir  创建文件夹 -p 如果指定 a/b/c 时 a .b 不存在,一起创建出来 cp       复制文件或文件 ...

  7. c# 封装的文件夹操作类之复制文件夹

    c#  封装的文件夹操作类之复制文件夹 一.复制文件夹原理: 1.递归遍历文件夹 2.复制文件 二.FolderHelper.cs /// <summary> /// 文件夹操作类 /// ...

  8. Python_文件与文件夹操作

    ''' os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件与文件夹操作的方法. os.path模块提供了大量用于路径判断.切分.连接以及文件夹遍历的方法. shutil模块 ...

  9. 文件及文件夹操作- File类、Directory 类、FileInfo 类、DirectoryInfo 类

    文件及文件夹操作: C/S:WinForm可以操作客户端文件 Client ServerB/S:Brower Server 命名空间:using system .IO; 1. File类: 创建:Fi ...

随机推荐

  1. GO语言学习笔记之Linux环境下安装GO语言

    0x00 安装环境和GO版本 本篇是源码安装,非使用包管理工具安装. # Centos 7.4 # GO v1.11.2 0x01 下载GO安装包 # wget https://dl.google.c ...

  2. Windbg解决系统蓝屏

    win10企业版连续两天遭遇系统蓝屏, 今天就各种检查,准备好好地研究一下这个问题,以下是整个过程: 首先,找到系统蓝屏时的错误日志: [计算机] --> [管理] --> [系统工具] ...

  3. Linux 系统下安装 python-skimage

    Linux 系统下安装 python-skimage 安装必须的依赖 // python-mumpy // python-scipy // python-matplotlib $ sudo apt-g ...

  4. 复制MIFARE Classic卡

    Mifare Classic 1K智能卡介绍及nfc-tools的使用 [原创]RFID安全之——ACR122U菜鸟初体验-『智能设备』-看雪安全论坛 复制MIFARE Classic小区门禁卡记录 ...

  5. linux判断文件大小

    第一条code ll -s | tail -n +2 | awk '$1 >= 10 {print $1,$10 "容量大于10"} $1 <= 9 {print $1 ...

  6. 20145208 蔡野 《网络对抗》免考项目 MSF学习

    20145208 蔡野 <网络对抗>免考项目 MSF Exploit模块开发 题目:MSF Exploit模块开发 摘要 本免考项目的目标是通过对msf模块的设计语言--ruby和expl ...

  7. Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动【转】

    本文转载自:https://blog.csdn.net/zqixiao_09/article/details/50858776 版权声明:本文为博主原创文章,未经博主允许不得转载.    https: ...

  8. POP-OOP-SOP-COP-SOA-AOP

    一.面向过程 二.面向对象 三.面向服务 四.补充 五.总结: 英文及缩写: 面向过程:procedure oriented programming POP 面向对象:object oriented ...

  9. hihoCoder week14 无间道之并查集

    并查集的基本使用 #include <bits/stdc++.h> using namespace std; ; int n, fa[N]; int cnt, tot; map<st ...

  10. JS控制显示/隐藏二级菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...