文件IO及路径

1.文本文件的读写

文本文件指的是以纯文本格式保存的文件,比如.cpp,.txt

Qt中对文本文件的读写有2中方式:

1.使用QFile+QTextStream

2.使用QFileIODevice功能

2.二进制文件的读写

除了文本文件以外,其他需要按照一定格式定义读写的文件都称为二进制文件。每种二进制文件都有自己的格式定义,写入和读取都得按照一定的顺序,就如同之前串口通讯的自定数据协议那样

Qt使用QFile+QTextStream进行二进制数据的读写。其中QFile负责文件IO、QDaraStream负责以数据流的方式读取文件内容或写入内容。

3.文件目录操作

Qt中能进行文件和目录操作相关的类包括以下几个:

作用
QCoreApplication 提取应用程序路径、程序名等信息
QFile 打开、复制、删除文件
QFileInfo 提取文件信息:路径、文件名、后缀等
QDir 用于提取目录或文件信息,获取一个目录下的文件或目录列表,创建、删除目录,文件重命名等
QFileSystemWatcher 监听目录下添加、删除等变化
QTemporaryDir 用于创建临时目录

3.1QDir

QDir是Qt中用于目录操作的类,该每个QDir类都维护了一个URL,该类的许多函数都和这个URL有关,QDir常见API如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
exists()		//判断目录是否存在。
mkpath() //创建目录及其父目录,如果已存在则不进行任何操作。
rmpath() //删除目录及其子目录和文件。
entryList() //获取目录下的文件和子目录列表。
absolutePath() //获取目录的绝对路径。
canonicalPath() //获取目录的规范路径。
cd() //切换当前目录到指定目录。
setCurrent() //设置当前工作目录。
isReadable() //检查目录是否可读。
isWritable() //检查目录是否可写。
isHidden() //检查目录是否隐藏。
isEmpty() //检查目录是否为空。
dirName() //获取目录名。
filePath() //获取文件的完整路径。
makeAbsolute() //将相对路径转换为绝对路径。
remove() //删除指定文件或目录。

注意:QDir的许多方法既能使用相对路径,又能使用绝对路径,使用相对路径的话,相对路径是加在该QDir实例中维护的URL后的

一些使用例子:

1
2
3
// 1.得到本进程的路径
QDir dir(QCoreApplication::applicationDirPath());
qDebug() << dir.absolutePath();
1
2
3
4
5
// 2.filePath的使用
QDir dir(QCoreApplication::applicationDirPath());
qDebug() << dir.absolutePath();
qDebug() << dir.filePath("666");//filepath返回的是dir的绝对路径再加上输入的文件名
//返回:"F:/QT_Learn/15-Dir/release/666
1
2
3
4
5
6
7
8
9
//3.基于路径创建文件夹
QDir dir(QCoreApplication::applicationDirPath());
qDebug() << dir.absolutePath();

//注意:QDir的许多方法既能使用相对路径,又能使用绝对路径,使用相对路径的话,相对路径是加在该QDir实例中维护的URL后的
if(!QDir(dir.filePath("666")).exists())
{
dir.mkdir("666");
}