先导
因为有需求使用
Qt
的文件I/O
操作,所以做此记录以供后用
使用
简单使用以及说明
简单的使用基本上分4步:
- 定义文件变量
- 打开文件
- 执行文件
I/O
操作 - 关闭文件
简单使用读取文件:
代码语言:javascript复制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
函数差不多,需要讲解一下的是QFile
的open
函数的参数,有以下的表列
参数 | 说明 |
---|---|
NotOpen | 不打开文件 |
ReadOnly | 只读 |
WriteOnly | 只写 |
ReadWrite | 可读写 |
Append | 追加 |
Truncate | 尽可能在打开文件前删除 |
Text | 限定文本操作,读文件的话结束符翻译为文本的n,写文件则结尾时写入当前系统的文本结束符,例如win的nr |
Unbuffered | 不能使用缓存流I/O |
NewOnly | 在创建文件的时候确保文件是不存在的,不然文件不能打开 |
ExistingOnly | 在读取文件是确保文件是存在的,不然文件不能打开 |
简单写入文件
代码语言:javascript复制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
中可以使用QTextStream
和QDateStream
来对文件进行操作
读取文件:
代码语言:javascript复制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();
写入文件:
代码语言:javascript复制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
的基本操作,但是其使用方式还有很多,这仅仅是最基本的使用方式而已,以后还有很多东西需要学习的