1.Qt通过QIODevice为输入输出提供了极佳的支持。QIODevice是一个封装能够读写字节块“设备”的强有力的提取器。
2.除了设备类,Qt还提供了两个更高级别的流类,使我们可以从任意的输入输出设备读写数据(QDataStream用来读写二进制的数据),(QTextStream用来读写文本数据)
3.Qt提供了QDir,QFileInfo类,它们分别用于处理目录地址和提供内部文件信息。
4.QProcess可以允许访问外部进程,这里说的很少,后面会单独为它开一页。
这章主要是讲文件的写入和读出。
写入:
QFile file("C://Users//Nikola//Desktop//1.txt");
if(!file.open(QIODevice::WriteOnly))
{
return -1;
}
QTextStream out(&file);
for(int i = 0;i < 10;++I)
{
out >> i >>endl;
}
读出:
int main(int argc,char* argv[])
{
QFile file("C://Users//Nikola//Desktop//1.txt");
if(!file.open(QIODevice::ReadOnly))
{
return -1;
}
QTextStream in(&file);
while(!in.atEnd())
{
QString a = in.readLine();
std::cout << a.toStdString() << std::endl;
}
std::cin.get();
std::cin.get();
}
结合我自己的工作经验,文件的输入输出一个比较重要的应用是实现软件的串行化,这个有时候需要自己去对运算符重载和对特定的数据类型进行注册。
运算符重载事例代码如下:
QDataStream &operator<<(QDataStream &out, const Painting &painting)
这里假设Painting是你自己定义的一个类。
QDataStream &operator<<(QDataStream &out, const Painting &painting){
out<<painting.title()<<paint.artist()<<quint32(painting.year());
}
QDataStream &operator>>(QDataStream& in,const Painting &painting){
QString title;
QString artist;
quint32 year;
in >> title >> artist >> year;
return in;
}
5.QProcess这里讲的不够细致。后面再开一章节吧。。。