Qt文件操作QFile

先导

因为有需求使用Qt的文件I/O操作,所以做此记录以供后用

使用

简单使用以及说明

简单的使用基本上分4步:

  1. 定义文件变量
  2. 打开文件
  3. 执行文件I/O操作
  4. 关闭文件

简单使用读取文件:

1
2
3
4
5
6
7
8
QFile file("your file path");
file.open(QFile::ReadOnly);
QByteArray buf;
while(file.read(buf.data(),1024)>0){
cout<<buf;
buf.clear();
}
file.close();

上述文件读取操作中,使用的是C++习惯下的read函数,其使用也和C++read函数差不多,需要讲解一下的是QFileopen函数的参数,有以下的表列

参数 说明
NotOpen 不打开文件
ReadOnly 只读
WriteOnly 只写
ReadWrite 可读写
Append 追加
Truncate 尽可能在打开文件前删除
Text 限定文本操作,读文件的话结束符翻译为文本的\n,写文件则结尾时写入当前系统的文本结束符,例如win\n\r
Unbuffered 不能使用缓存流I/O
NewOnly 在创建文件的时候确保文件是不存在的,不然文件不能打开
ExistingOnly 在读取文件是确保文件是存在的,不然文件不能打开

简单写入文件

1
2
3
4
5
QFile file("your file path");
file.open(QFile::WriteOnly | QFile::Truncate);
QByteArray buf("text to write");
file.write(buf);
file.close();

使用stream进行读写

使用stream进行读写时可以使用输入(>>)输出(<<)流符号进行格式化输入输出,读写方便,在Qt的文件I/O中可以使用QTextStreamQDateStream来对文件进行操作

读取文件:

1
2
3
4
5
6
7
8
9
10
11
12
QFile file("in.txt");
if (!file.open(QFile::ReadOnly | QFile::Text))
return;

QByteArray buf;
QTextStream in(&file);
while (!in.atEnd()) {
in>>buf.data();
cout<<buf;
buf.clear();
}
file.close();

写入文件:

1
2
3
4
5
6
7
8
QFile file("out.txt");
if (!file.open(QFile::WriteOnly | QFile::Text))
return;

QTextStream out(&file);
out << "a=" << 1 << "\n";
out.flush();
file.close();

后记

Qt的文件操作对于一个应用软件来说是一个重要的使用方式,虽然上面讲述了Qt文件I/O的基本操作,但是其使用方式还有很多,这仅仅是最基本的使用方式而已,以后还有很多东西需要学习的


impressionyang