学习自唐佐林老师的Qt
连续的存储空间:有可能是内存,硬盘,串口,USB口等
顺序存取设备:如 连接到串口上面的设备
随机存取设备:文件操作
IO 操作的本质就是对连续空间的读写,该连续空间可以是内存空间,也可以是外存空间。文件是保存在外部空间中的连续数据,即硬盘,文件是保存在硬盘上面的。所以文件操作 就是对硬盘上连续空间进行数据的读写,并且可以在这片连续空间当中任意位置进行定位。 文件操作是一种随机设备的存取。
QFile : 文件IO
QBuffer : 内存中一片连续的内存空间
QAbstractSocket:网络编程
QProcess:进程间通信
QFile 对象实际上代表的是硬盘上的一个文件
实验1:控制台项目,QFile, QFileInfo使用
#include <QtCore/QCoreApplication>
#include <QFile>
#include <QByteArray>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime>
//参数:文件路径
void write(QString f)
{
//定义一个文件对象,代表硬盘上的一个文件
QFile file(f);
//以只写的方式打开,写入文本. 无则创建 有则清空
if( file.open(QIODevice::WriteOnly | QIODevice::Text) )
{
//写入内容
file.write("D.T.Software\n");
file.write("Delphi Tang\n");
//关闭文件
file.close();
}
}
//读
void read(QString f)
{
//定义一个文件对象,代表硬盘上的一个文件
QFile file(f);
//以只写的方式打开,读出文本
if( file.open(QIODevice::ReadOnly | QIODevice::Text) )
{
//字节数组 接受 读取的信息
//file.readLine():读取一行
//file.readAll():读取全部
//file.read(n):读取n个字符
QByteArray ba = file.readLine();
QString s(ba);//字节数组中的数据转换为字符串
qDebug() << s;
file.close();
}
}
//打印文件属性信息
void info(QString f)
{
//定义一个文件对象,代表硬盘上的一个文件
QFile file(f);
//读取文件属性
QFileInfo info(file);
qDebug() << info.exists();
qDebug() << info.isFile();
qDebug() << info.isReadable();
qDebug() << info.isWritable();
qDebug() << info.created();
qDebug() << info.lastRead();
qDebug() << info.lastModified();
qDebug() << info.path();
qDebug() << info.fileName();
qDebug() << info.suffix();
qDebug() << info.size();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
write("D:/work/QT_TEST/qt/code/32-1/test.txt");
read("D:/work/QT_TEST/qt/code/32-1/test.txt");
info("D:/work/QT_TEST/qt/code/32-1/test.txt");
return a.exec();
}
实验2 QTemporaryFile 临时文件使用
#include <QtCore/QCoreApplication>
#include <QTemporaryFile>
#include <QFileInfo>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//创建临时文件对象,不需要指定文件名!
QTemporaryFile tempFile;
//打开临时文件,不需要指定读写方式
if( tempFile.open() )
{
tempFile.write("D.T.Software");
tempFile.close();
}
//获取临时文件属性
QFileInfo info(tempFile);
qDebug() << info.isFile();
qDebug() << info.path();
qDebug() << info.fileName();
return a.exec();
}